SDKsWASM
标记会话已读
使用 WASM SDK 将指定会话的消息标记为已读。
用户打开会话并阅读完当前可见消息后,调用 markConversationMessageAsRead()。不要在只预览通知或后台收到消息时提前标记已读。
await openimsdk.markConversationMessageAsRead(conversationID);Promise 成功表示标记已读请求已经完成,不等于会话事件已经到达。随后通过 CbEvents.OnConversationChanged 取得新的 ConversationItem[],按 conversationID 合并未读数;完整监听代码见获取会话列表。需要立即校准时,重新查询该会话。
对于单聊,当前用户标记会话已读后,对端可通过 CbEvents.OnRecvC2CReadReceipt 收到消息已读回执。本页是该事件的完整监听归属页;data 是 ReceiptInfo[],先按对端用户定位单聊会话,再按每项 msgIDList 中的 clientMsgID 更新已读状态。
import { CbEvents } from '@openim/wasm-client-sdk';
const handleC2CReadReceipt = ({ data }) => {
mergeC2CReadReceipts(data);
};
openimsdk.on(CbEvents.OnRecvC2CReadReceipt, handleC2CReadReceipt);
function removeC2CReadReceiptListener() {
openimsdk.off(CbEvents.OnRecvC2CReadReceipt, handleC2CReadReceipt);
}组件卸载、退出登录或切换账号时调用 removeC2CReadReceiptListener()。群聊中调用本 API 只清理当前账号的会话未读数;需要上报群成员级已读状态时,另见上报群消息已读。
这个页面有帮助吗?