Events 监听器(Electron IMLib)

类继承图​

Object→Events

继承关系:Object → Events。监听器由 SDK 事件总线实现;业务代码只需注册回调,不需要继承。

类说明​

Events 定义 Electron IMLib 的 16 个事件与事件载荷。通过 addEventListener 注册、removeEventListener 移除;同一 handler 重复注册只生效一次,页面销毁时务必移除监听。

项值
事件 APIaddEventListener(event, handler) 返回取消函数 / removeEventListener(event, handler)
事件常量Events
事件数量16
载荷类型见下表
平台状态已交付

事件概要​

事件平台常量载荷说明
CONNECTINGEvents.CONNECTING{attempt:int}连接建立中:每次建连/重连尝试时触发,载荷含重试次数 attempt。
CONNECTEDEvents.CONNECTED{userId:string, sessionId?:string}连接建立成功:收到服务端 hello 之后触发,可开始发送请求。
DISCONNECTEvents.DISCONNECT{code:int, reason:string}连接断开:主动断开、鉴权失败或放弃重连时触发。
SUSPENDEvents.SUSPEND{code:int, reason:string}连接挂起:异常断开后 SDK 进入指数退避重连,期间业务请求会失败。
MESSAGESEvents.MESSAGES{messages:Message[]}收到消息:在线消息与离线补发消息都通过该事件下发,载荷为 Message 列表。
CONVERSATIONEvents.CONVERSATION{conversation:Conversation}会话变更:未读数、置顶、提醒级别、草稿或最后一条消息变化时触发。
MESSAGE_RECALLEDEvents.MESSAGE_RECALLED{message:Message}消息被撤回:收到服务端撤回帧,载荷为被撤回的 Message。
READ_RECEIPTEvents.READ_RECEIPTReadReceipt已读回执:收到对方已读上报,载荷为 ReadReceipt。
TYPINGEvents.TYPING{conversationType:ConversationType,targetId:string,userId:string,typing:bool,timestamp:int64}输入状态:收到“正在输入”状态帧。
FRIEND_EVENTEvents.FRIEND_EVENT{kind:FriendEventKind,request?:FriendRequest,fromUserId?:string,toUserId?:string,timestamp:int64}好友事件:好友请求、接受、拒绝等事件,载荷含 FriendRequest。
CHATROOM_EVENTEvents.CHATROOM_EVENT{chatroomId:string,kind:ChatroomEventKind,userId?:string,onlineCount?:uint32,chatroom?:Chatroom,timestamp:int64}聊天室事件:成员加入/退出/被移出、成员变更、聊天室销毁。
KICKEDEvents.KICKED{code:int,reason:string}被踢下线:多端互踢或账号封禁,SDK 不再自动重连。
MESSAGE_REACTION_CHANGEDEvents.MESSAGE_REACTION_CHANGED{messageId:string,conversationType:ConversationType,targetId:string,reactionId:string,operation:added|removed|cleared,userId:string,reactionTime:int64,totalCount:uint32,users:string[]?}—
MESSAGE_EXPANSION_CHANGEDEvents.MESSAGE_EXPANSION_CHANGED{messageId:string,conversationType:ConversationType,targetId:string,updated:Record<string,string>?,removed:string[]?,timestamp:int64}—
STREAM_MESSAGE_CHANGEDEvents.STREAM_MESSAGE_CHANGED{streamId:string,messageId:string,conversationType:ConversationType,targetId:string,senderId:string,delta:string,seq:uint32,text:string,status:streaming|ended,complete:bool,timestamp:int64}—
PRESENCE_CHANGEDEvents.PRESENCE_CHANGED{userId:string,online:bool,lastSeenAt:int64,timestamp:int64,reason:connect|disconnect|kick|deactivate}—

详细事件说明​

CONNECTING {attempt:int}
Events事件载荷

连接建立中:每次建连/重连尝试时触发,载荷含重试次数 attempt。

CONNECTED {userId:string, sessionId?:string}
Events事件载荷

连接建立成功:收到服务端 hello 之后触发,可开始发送请求。

DISCONNECT {code:int, reason:string}
Events事件载荷

连接断开:主动断开、鉴权失败或放弃重连时触发。

SUSPEND {code:int, reason:string}
Events事件载荷

连接挂起:异常断开后 SDK 进入指数退避重连,期间业务请求会失败。

MESSAGES {messages:Message[]}
Events事件载荷

收到消息:在线消息与离线补发消息都通过该事件下发,载荷为 Message 列表。

CONVERSATION {conversation:Conversation}
Events事件载荷

会话变更:未读数、置顶、提醒级别、草稿或最后一条消息变化时触发。

MESSAGE_RECALLED {message:Message}
Events事件载荷

消息被撤回:收到服务端撤回帧,载荷为被撤回的 Message。

READ_RECEIPT ReadReceipt
Events事件载荷

已读回执:收到对方已读上报,载荷为 ReadReceipt。

TYPING {conversationType:ConversationType,targetId:string,userId:string,typing:bool,timestamp:int64}
Events事件载荷

输入状态:收到“正在输入”状态帧。

FRIEND_EVENT {kind:FriendEventKind,request?:FriendRequest,fromUserId?:string,toUserId?:string,timestamp:int64}
Events事件载荷

好友事件:好友请求、接受、拒绝等事件,载荷含 FriendRequest。

CHATROOM_EVENT {chatroomId:string,kind:ChatroomEventKind,userId?:string,onlineCount?:uint32,chatroom?:Chatroom,timestamp:int64}
Events事件载荷

聊天室事件:成员加入/退出/被移出、成员变更、聊天室销毁。

KICKED {code:int,reason:string}
Events事件载荷

被踢下线:多端互踢或账号封禁,SDK 不再自动重连。

MESSAGE_REACTION_CHANGED {messageId:string,conversationType:ConversationType,targetId:string,reactionId:string,operation:added|removed|cleared,userId:string,reactionTime:int64,totalCount:uint32,users:string[]?}
Events事件载荷
MESSAGE_EXPANSION_CHANGED {messageId:string,conversationType:ConversationType,targetId:string,updated:Record<string,string>?,removed:string[]?,timestamp:int64}
Events事件载荷
STREAM_MESSAGE_CHANGED {streamId:string,messageId:string,conversationType:ConversationType,targetId:string,senderId:string,delta:string,seq:uint32,text:string,status:streaming|ended,complete:bool,timestamp:int64}
Events事件载荷
PRESENCE_CHANGED {userId:string,online:bool,lastSeenAt:int64,timestamp:int64,reason:connect|disconnect|kick|deactivate}
Events事件载荷

注册与移除监听​

JavaScript
import { Events } from '@ni-paas-im/electron';

const handler = (payload) => {
  console.log(payload);
};

client.addEventListener(Events.MESSAGES, handler);
client.removeEventListener(Events.MESSAGES, handler);

相关链接​