RongIMEvents 监听器(Flutter IMLib)

类继承图​

Object→RongIMEvents

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

类说明​

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

项值
事件 APIengine.events.listen((event) => ...) / engine.addEventListener(name, handler)
事件常量RongIMEvents
事件数量16
载荷类型见下表
平台状态已交付

事件概要​

事件平台常量载荷说明
CONNECTINGCONNECTING{attempt:int}连接建立中:每次建连/重连尝试时触发,载荷含重试次数 attempt。
CONNECTEDCONNECTED{userId:string, sessionId?:string}连接建立成功:收到服务端 hello 之后触发,可开始发送请求。
DISCONNECTDISCONNECT{code:int, reason:string}连接断开:主动断开、鉴权失败或放弃重连时触发。
SUSPENDSUSPEND{code:int, reason:string}连接挂起:异常断开后 SDK 进入指数退避重连,期间业务请求会失败。
MESSAGESMESSAGES{messages:Message[]}收到消息:在线消息与离线补发消息都通过该事件下发,载荷为 Message 列表。
CONVERSATIONCONVERSATION{conversation:Conversation}会话变更:未读数、置顶、提醒级别、草稿或最后一条消息变化时触发。
MESSAGE_RECALLEDMESSAGE_RECALLED{message:Message}消息被撤回:收到服务端撤回帧,载荷为被撤回的 Message。
READ_RECEIPTREAD_RECEIPTReadReceipt已读回执:收到对方已读上报,载荷为 ReadReceipt。
TYPINGTYPING{conversationType:ConversationType,targetId:string,userId:string,typing:bool,timestamp:int64}输入状态:收到“正在输入”状态帧。
FRIEND_EVENTFRIEND_EVENT{kind:FriendEventKind,request?:FriendRequest,fromUserId?:string,toUserId?:string,timestamp:int64}好友事件:好友请求、接受、拒绝等事件,载荷含 FriendRequest。
CHATROOM_EVENTCHATROOM_EVENT{chatroomId:string,kind:ChatroomEventKind,userId?:string,onlineCount?:uint32,chatroom?:Chatroom,timestamp:int64}聊天室事件:成员加入/退出/被移出、成员变更、聊天室销毁。
KICKEDKICKED{code:int,reason:string}被踢下线:多端互踢或账号封禁,SDK 不再自动重连。
MESSAGE_REACTION_CHANGEDMESSAGE_REACTION_CHANGED{messageId:string,conversationType:ConversationType,targetId:string,reactionId:string,operation:added|removed|cleared,userId:string,reactionTime:int64,totalCount:uint32,users:string[]?}—
MESSAGE_EXPANSION_CHANGEDMESSAGE_EXPANSION_CHANGED{messageId:string,conversationType:ConversationType,targetId:string,updated:Record<string,string>?,removed:string[]?,timestamp:int64}—
STREAM_MESSAGE_CHANGEDSTREAM_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_CHANGEDPRESENCE_CHANGED{userId:string,online:bool,lastSeenAt:int64,timestamp:int64,reason:connect|disconnect|kick|deactivate}—

详细事件说明​

CONNECTING {attempt:int}
RongIMEvents事件载荷

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

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

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

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

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

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

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

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

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

CONVERSATION {conversation:Conversation}
RongIMEvents事件载荷

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

MESSAGE_RECALLED {message:Message}
RongIMEvents事件载荷

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

READ_RECEIPT ReadReceipt
RongIMEvents事件载荷

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

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

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

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

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

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

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

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

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

MESSAGE_REACTION_CHANGED {messageId:string,conversationType:ConversationType,targetId:string,reactionId:string,operation:added|removed|cleared,userId:string,reactionTime:int64,totalCount:uint32,users:string[]?}
RongIMEvents事件载荷
MESSAGE_EXPANSION_CHANGED {messageId:string,conversationType:ConversationType,targetId:string,updated:Record<string,string>?,removed:string[]?,timestamp:int64}
RongIMEvents事件载荷
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}
RongIMEvents事件载荷
PRESENCE_CHANGED {userId:string,online:bool,lastSeenAt:int64,timestamp:int64,reason:connect|disconnect|kick|deactivate}
RongIMEvents事件载荷

注册与移除监听​

Dart
void onMessage(dynamic payload) {
  print(payload);
}

engine.addEventListener(RongIMEvents.MESSAGES, onMessage);
engine.removeEventListener(RongIMEvents.MESSAGES, onMessage);

相关链接​