浏览 SDKs · WASM
SDKsWASM

事件概览

注册 WASM SDK 事件,并按业务生命周期同步连接与数据状态。

复制

WASM SDK 通过 CbEvents 推送连接、同步、用户、好友、会话、群组、消息和通话相关事件。getSDK() 返回的实例统一提供 on()off();不需要为不同领域创建独立的事件处理器对象。

注册与移除事件

处理函数必须保持稳定引用。需要清理时,把注册时使用的同一事件枚举值和函数引用传给 off()。每个事件的完整代码只放在下表链接的归属页面;本页不使用其他领域事件重复演示通用写法。

事件回调通常包含 dataerrCodeerrMsg。应用应校验 errCode,把 data 幂等合并到状态层,并在错误日志中记录事件名和必要的业务标识。

选择注册时机

事件范围建议生命周期对应页面
连接和 Tokenlogin() 前注册,切换账号时清理认证与管理登录会话
用户、好友和黑名单联系人状态层初始化时注册用户概览
会话列表会话列表状态层初始化时注册获取会话列表
会话未读数应用角标状态层初始化时注册维护总未读数
群组列表群组状态层初始化时注册群组概览
群成员群成员状态层初始化时注册分页查询群成员
入群申请群申请状态层初始化时注册获取收到的入群申请
消息消息状态层初始化时注册接收消息
通话通话功能初始化时注册通话事件

不要在每次组件渲染时重复注册。多次注册同一个逻辑会造成重复消息、未读数反复累加,以及将旧账号的状态写入当前界面。

监听初始化同步

登录后 SDK 会同步 OpenIMServer 数据。以下事件适合驱动全局同步状态和进度展示:

事件含义
OnSyncServerStart开始同步 OpenIMServer 数据。databooleantrue 表示本地库因卸载重装、清除站点数据等原因重建后的同步;false 表示普通登录后同步。
OnSyncServerProgress同步进度发生变化;data 为进度数值。
OnSyncServerFinish本轮同步完成,可以刷新依赖完整数据的界面。
OnSyncServerFailed本轮同步失败,应记录错误并等待重试或连接恢复。
import { CbEvents } from '@openim/wasm-client-sdk';

function handleSyncStart({ data: reinstalled }) {
  setSyncState({ status: 'syncing', progress: 0, reinstalled });
}

function handleSyncProgress({ data }) {
  setSyncState({ status: 'syncing', progress: data });
}

function handleSyncFinish() {
  setSyncState({ status: 'ready', progress: 100 });
}

function handleSyncFailed({ errCode, errMsg }) {
  setSyncState({ status: 'failed' });
  console.error('WASM SDK 数据同步失败', { errCode, errMsg });
}

openimsdk.on(CbEvents.OnSyncServerStart, handleSyncStart);
openimsdk.on(CbEvents.OnSyncServerProgress, handleSyncProgress);
openimsdk.on(CbEvents.OnSyncServerFinish, handleSyncFinish);
openimsdk.on(CbEvents.OnSyncServerFailed, handleSyncFailed);

function removeSyncListeners() {
  openimsdk.off(CbEvents.OnSyncServerStart, handleSyncStart);
  openimsdk.off(CbEvents.OnSyncServerProgress, handleSyncProgress);
  openimsdk.off(CbEvents.OnSyncServerFinish, handleSyncFinish);
  openimsdk.off(CbEvents.OnSyncServerFailed, handleSyncFailed);
}

OnSyncServerStart 用于进入同步状态;其 data 就是是否为卸载重装(或等价的本地库重建)后的同步。true 时本地通常没有可用缓存,适合展示更完整的同步引导或全量拉取提示;false 时多为增量同步。OnSyncServerProgressdata 是当前进度数值。完成和失败事件在 WASM 声明中不携带该布尔值,只用于将本轮同步状态置为完成或失败。它们描述 SDK 的同步生命周期,不是某个查询 API 的 Promise 回调,也没有业务实体合并键;状态应按当前 SDK 实例和登录用户隔离。

本页是四个同步事件的完整监听示例归属页。退出登录、切换账号或销毁 SDK 作用域时调用 removeSyncListeners()

同步完成后,数据仍可能继续变化:应重新查询当前界面所需快照,并继续通过各领域归属页的增量事件更新同一状态层。