跳到主要内容

事件监听

添加监听器

可以通过 addEventListener 方法,监听 IMLib 内部触发的各类事件通知。同一事件类型可以绑定多个监听函数,且它们都会被依次执行。

如果只希望监听某个事件一次,可以使用 onceEventListener

JavaScript

// 消息监听
const Events = RongIMLib.Events;

RongIMLib.addEventListener(Events.MESSAGES, (evt) => {
console.log(evt.messages);
})
常见问题:监听中收到重复的数据

通常是由于业务层重复注册了相同监听器导致的。常见场景如在子组件的生命周期中注册监听,每次组件创建都会触发一次注册,最终导致收到重复数据。

推荐做法:

  • 全局注册:建议在应用入口或统一管理位置注册监听器,确保只注册一次。
  • 组件内注册需同步销毁:如确需在组件内监听,务必在组件销毁时移除监听器,防止内存泄露和重复回调。

移除监听

为了避免内存泄露,建议在不需要监听时,及时使用 removeEventListener 或 removeEventListeners 移除事件监听器。

  • removeEventListener:移除某个事件对应的指定监听函数。
  • removeEventListeners:移除某个事件上所有的监听函数。
JavaScript
const Events = RongIMLib.Events

const listener = (evt) => console.log(evt.messages)

// 添加具体事件监听器
RongIMLib.addEventListener(Events.MESSAGES, listener)

// 移除具体事件监听器
RongIMLib.removeEventListener(Events.MESSAGES, listener)

// 移除具体事件的所有监听器
RongIMLib.removeEventListeners(Events.MESSAGES)

事件说明

下表列出了当前 IMLib 所支持的全部事件类型、返回值类型以及事件说明。你可以根据业务需求,灵活添加对应的事件监听器。

事件名称返回值类型说明版本
CONNECTINGvoid正在建立连接-
CONNECTEDvoid已成功链接-
DISCONNECTErrorCode已断开 注意:5.7.0 版本起,回调参数的类型由 ConnectionStatus 变更为 ErrorCode
SUSPENDErrorCode链接异常断开(自动重连) 注意:5.7.0 版本起,回调参数的类型由 ConnectionStatus & ErrorCode变更为 ErrorCode
MESSAGESIMessagesEvent收到消息
READ_RECEIPT_RECEIVEDIReadReceiptReceivedEvent收到已读回执(单聊)
MESSAGE_RECEIPT_REQUESTIMessageReceiptRequestEvent收到已读回执请求(群聊)
MESSAGE_RECEIPT_RESPONSEIMessageReceiptResponseEvent收到已读回执响应(群聊)
CONVERSATIONIConversationEvent收到会话变更通知
CHATROOMIChatroomListenerData收到聊天室变更通知。注意:如需监听聊天室成员变化,请提交工单申请开通服务。
EXPANSIONIExpansionListenerData收到扩展变更通知
PULL_OFFLINE_MESSAGE_FINISHEDvoid离线消息拉取完成
TAGvoid(适用于多端登录场景)收到标签列表标签通知,表示用户可能在其他端创建、移除或编辑某个标签。收到此通知时需主动调用 getTags 获取全部标签以更新 UI 渲染。该标签列表包含了所有用于标记会话的标签。
CONVERSATION_TAGvoid(适用于多端登录场景)收到会话标签变动通知,表示用户可能在其他端修改了会话上所加的标签。收到此通知时需根据本地已渲染的会话列表,主动调用 getTagsFromConversation 逐个获取会话的所有标签,以更新 UI 渲染。
TYPING_STATUSITypingStatusEvent收到正在输入状态通知
MESSAGE_BLOCKEDIBlockedMessageInfo敏感词回调通知。需要提交工单开启服务后才能使用。默认关闭状态。5.0.2
ULTRA_GROUP_ENABLEvoid超级群会话列表同步完成,可以调用超级群相关接口;
5.20 版本开始,不再提供回调数据
5.2.0
OPERATE_STATUSIOperateStatusNotify超级群输入状态通知5.2.0
ULTRA_GROUP_MESSAGE_EXPANSION_UPDATEDIAReceivedMessage超级群消息扩展更新通知5.2.0
ULTRA_GROUP_MESSAGE_MODIFIEDIAReceivedMessage超级群消息被修改通知5.2.0
ULTRA_GROUP_MESSAGE_RECALLEDIAReceivedMessage超级群消息被撤回通知5.2.0
ULTRA_GROUP_CHANNEL_TYPE_CHANGEIUltraChannelChangeInfo超级群频道类型变更5.4.2
ULTRA_GROUP_CHANNEL_DELETEIUltraChannelDeleteInfo超级群频道被删除5.4.2
ULTRA_GROUP_CHANNEL_USER_KICKEDIUltraChannelUserKickedInfo超级群私有频道成员被移除5.4.2
DATABASE_UPGRADE_WILL_STARTvoid数据库升级开始,仅 Electron 支持5.10.4
DATABASE_UPGRADINGnumber数据库升级中,仅 Electron 支持5.10.4
DATABASE_UPGRADE_DID_COMPLETEErrorCode数据库升级结束,仅 Electron 支持5.10.4
GROUP_OPERATIONIGroupOperationInfo群组操作回调,可根据 IGroupOperationInfo 中的 operation 判断操作类型5.12.0
GROUP_INFO_CHANGEDIGroupInfoChanged群组信息变更通知5.12.0
GROUP_MEMBER_INFO_CHANGEDIGroupMemberInfoChanged群成员信息变更通知5.12.0
GROUP_APPLICATION_EVENTIGroupApplicationInfo用户申请或邀请事件及结果通知5.12.0
GROUP_REMARK_CHANGED_SYNCIGroupRemarkChangedSync群名称备注名更新多端同步通知5.12.0
GROUP_FOLLOWS_CHANGED_SYNCIGroupFollowsChangedSync群成员特别关注多端同步通知5.12.0
FRIEND_ADDEDIFriendAdd添加好友通知5.12.0
FRIEND_DELETEIFriendDelete移除好友通知5.12.0
FRIEND_APPLICATION_STATUS_CHANGEDIFriendApplicationStatusChange好友申请通知5.12.0
FRIEND_CLEAREDnumber清楚全部好友通知,通过 Server Api 调用清除全部好友出发5.12.0
FRIEND_INFO_CHANGED_SYNCIFriendInfoChangedSync多端同步好友信息变更通知5.12.0
CONVERSATIONS_SYNCEDvoid单群聊会话列表同步完成,需开启“会话列表支持超级群功能”,仅支持 Web 平台5.20.0