浏览 SDKs · WASM
SDKsWASM商业版

批量删除消息

使用 WASM SDK 批量删除当前账号在同一会话中的消息。

复制

参数说明

参数类型是否必填说明
conversationIDstring要删除消息所在的会话 ID。
clientMsgIDsstring[]要删除的消息 ID 列表;同一批 ID 必须属于同一会话。
isSyncboolean是否把删除动作同步到当前账号的其他客户端。
await openimsdk.deleteMessages({
  conversationID,
  clientMsgIDs: selectedMessageIDs,
  isSync: true,
});

isSync: false 删除当前设备及当前账号服务端记录;true 还请求把删除动作同步到其他客户端。它不会删除其他会话成员的副本,也不会产生撤回提示。

Promise 成功表示删除请求已经完成;同步开启时,这不代表其他客户端已经收到事件或完成界面更新。

CbEvents.OnMsgDeleted 是本页归属事件。dataMessageItem,结合消息路由确定会话后按 clientMsgID 幂等移除。

import { CbEvents } from '@openim/wasm-client-sdk';

const handleMessageDeleted = ({ data }) => {
  removeMessage(resolveConversationID(data), data.clientMsgID);
};

openimsdk.on(CbEvents.OnMsgDeleted, handleMessageDeleted);

function removeMessageDeletedListener() {
  openimsdk.off(CbEvents.OnMsgDeleted, handleMessageDeleted);
}

组件卸载、退出登录或切换账号时调用 removeMessageDeletedListener()。需要校准当前消息快照时,重新查询对应会话的历史消息。