You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何借助GetStream实现消息已送达和已读状态的检测

在GetStream中实现消息已送达&已读状态(仿WhatsApp/Telegram)

GetStream原生支持消息的送达、已读状态标记,以下是对应实现步骤,完全匹配WhatsApp/Telegram的交互逻辑:

一、消息已送达状态实现

已送达指消息成功到达接收方客户端(而非仅上传到Stream服务器),实现流程如下:

  • 发送方侧:发送消息后,Stream会自动为消息标记status: sent,此时UI可显示灰色单对勾。
  • 接收方侧:监听频道的message.new事件,收到新消息后立即调用markMessagesDelivered(),将频道内所有未送达消息标记为已送达:
    // 接收方监听新消息并标记送达
    channel.on('message.new', async (event) => {
      await channel.markMessagesDelivered();
    });
    
  • 发送方侧:监听message.delivered事件,收到后更新对应消息的UI(比如将灰色对勾改为蓝色):
    // 发送方监听送达事件更新UI
    channel.on('message.delivered', (event) => {
      const msgEl = document.getElementById(`msg-${event.messageId}`);
      if (msgEl) {
        msgEl.querySelector('.status-icon').className = 'status-icon delivered';
        // 或直接替换图标:msgEl.querySelector('.status-icon').src = '/blue-check.svg';
      }
    });
    

二、消息已读状态实现

已读指接收方已查看消息,实现流程如下:

  • 接收方侧:在进入聊天页面、窗口重新聚焦时,调用markMessagesRead()标记所有未读消息为已读:
    // 标记所有未读消息为已读
    async function markAllRead() {
      await channel.markMessagesRead();
    }
    
    // 页面加载时触发
    document.addEventListener('DOMContentLoaded', markAllRead);
    // 窗口聚焦时触发(用户切回聊天页面)
    window.addEventListener('focus', markAllRead);
    
  • 发送方侧:监听message.read事件,收到后更新消息UI为已读状态(比如显示双蓝色对勾):
    // 发送方监听已读事件更新UI
    channel.on('message.read', (event) => {
      const msgEl = document.getElementById(`msg-${event.messageId}`);
      if (msgEl) {
        msgEl.querySelector('.status-icon').className = 'status-icon read';
        // 或替换为双勾图标:msgEl.querySelector('.status-icon').src = '/double-blue-check.svg';
      }
    });
    

三、UI状态映射(完全匹配WhatsApp/Telegram)

状态UI表现(参考)
发送中灰色时钟图标
已发送到服务器灰色单对勾
已送达蓝色单对勾(WhatsApp)/ 灰色对勾+「送达」文字(Telegram)
已读蓝色双对勾(WhatsApp)/ 蓝色对勾+「已读」文字(Telegram)

关键注意事项

  • 确保频道权限配置正确:接收方需拥有read权限才能接收消息并标记状态
  • 多设备登录场景下,Stream会自动同步消息状态,无需额外处理
  • 历史消息初始化时,可通过message.status字段(sent/delivered/read)直接渲染对应状态

内容的提问来源于stack exchange,提问作者Adil Sakout

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:09:24