im_event_cb 监听器(Native (C ABI) IMLib)
类继承图
Object→im_event_cb
继承关系:Object → im_event_cb。监听器由 SDK 事件总线实现;业务代码只需注册回调,不需要继承。
类说明
im_event_cb 定义 Native (C ABI) IMLib 的 16 个事件与事件载荷。通过 addEventListener 注册、removeEventListener 移除;同一 handler 重复注册只生效一次,页面销毁时务必移除监听。
| 项 | 值 |
|---|---|
| 事件 API | im_client_set_event_callback(im_client_t*, im_event_cb cb, void* user_data) |
| 事件常量 | im_event_cb |
| 事件数量 | 16 |
| 载荷类型 | im_event_t(见 include/im_sdk.h) |
| 平台状态 | 已交付 |
事件概要
| 事件 | 平台常量 | 载荷 | 说明 |
|---|---|---|---|
CONNECTING | CONNECTING | {attempt:int} | 连接建立中:每次建连/重连尝试时触发,载荷含重试次数 attempt。 |
CONNECTED | CONNECTED | {userId:string, sessionId?:string} | 连接建立成功:收到服务端 hello 之后触发,可开始发送请求。 |
DISCONNECT | DISCONNECT | {code:int, reason:string} | 连接断开:主动断开、鉴权失败或放弃重连时触发。 |
SUSPEND | SUSPEND | {code:int, reason:string} | 连接挂起:异常断开后 SDK 进入指数退避重连,期间业务请求会失败。 |
MESSAGES | MESSAGES | {messages:Message[]} | 收到消息:在线消息与离线补发消息都通过该事件下发,载荷为 Message 列表。 |
CONVERSATION | CONVERSATION | {conversation:Conversation} | 会话变更:未读数、置顶、提醒级别、草稿或最后一条消息变化时触发。 |
MESSAGE_RECALLED | MESSAGE_RECALLED | {message:Message} | 消息被撤回:收到服务端撤回帧,载荷为被撤回的 Message。 |
READ_RECEIPT | READ_RECEIPT | ReadReceipt | 已读回执:收到对方已读上报,载荷为 ReadReceipt。 |
TYPING | TYPING | {conversationType:ConversationType,targetId:string,userId:string,typing:bool,timestamp:int64} | 输入状态:收到“正在输入”状态帧。 |
FRIEND_EVENT | FRIEND_EVENT | {kind:FriendEventKind,request?:FriendRequest,fromUserId?:string,toUserId?:string,timestamp:int64} | 好友事件:好友请求、接受、拒绝等事件,载荷含 FriendRequest。 |
CHATROOM_EVENT | CHATROOM_EVENT | {chatroomId:string,kind:ChatroomEventKind,userId?:string,onlineCount?:uint32,chatroom?:Chatroom,timestamp:int64} | 聊天室事件:成员加入/退出/被移出、成员变更、聊天室销毁。 |
KICKED | KICKED | {code:int,reason:string} | 被踢下线:多端互踢或账号封禁,SDK 不再自动重连。 |
MESSAGE_REACTION_CHANGED | 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_CHANGED | MESSAGE_EXPANSION_CHANGED | {messageId:string,conversationType:ConversationType,targetId:string,updated:Record<string,string>?,removed:string[]?,timestamp:int64} | — |
STREAM_MESSAGE_CHANGED | 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_CHANGED | PRESENCE_CHANGED | {userId:string,online:bool,lastSeenAt:int64,timestamp:int64,reason:connect|disconnect|kick|deactivate} | — |
详细事件说明
CONNECTING {attempt:int}连接建立中:每次建连/重连尝试时触发,载荷含重试次数 attempt。
CONNECTED {userId:string, sessionId?:string}连接建立成功:收到服务端 hello 之后触发,可开始发送请求。
DISCONNECT {code:int, reason:string}连接断开:主动断开、鉴权失败或放弃重连时触发。
SUSPEND {code:int, reason:string}连接挂起:异常断开后 SDK 进入指数退避重连,期间业务请求会失败。
MESSAGES {messages:Message[]}收到消息:在线消息与离线补发消息都通过该事件下发,载荷为 Message 列表。
CONVERSATION {conversation:Conversation}会话变更:未读数、置顶、提醒级别、草稿或最后一条消息变化时触发。
MESSAGE_RECALLED {message:Message}消息被撤回:收到服务端撤回帧,载荷为被撤回的 Message。
READ_RECEIPT ReadReceipt已读回执:收到对方已读上报,载荷为 ReadReceipt。
TYPING {conversationType:ConversationType,targetId:string,userId:string,typing:bool,timestamp:int64}输入状态:收到“正在输入”状态帧。
FRIEND_EVENT {kind:FriendEventKind,request?:FriendRequest,fromUserId?:string,toUserId?:string,timestamp:int64}好友事件:好友请求、接受、拒绝等事件,载荷含 FriendRequest。
CHATROOM_EVENT {chatroomId:string,kind:ChatroomEventKind,userId?:string,onlineCount?:uint32,chatroom?:Chatroom,timestamp:int64}聊天室事件:成员加入/退出/被移出、成员变更、聊天室销毁。
KICKED {code:int,reason:string}被踢下线:多端互踢或账号封禁,SDK 不再自动重连。
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_CHANGED {messageId:string,conversationType:ConversationType,targetId:string,updated:Record<string,string>?,removed:string[]?,timestamp:int64}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_CHANGED {userId:string,online:bool,lastSeenAt:int64,timestamp:int64,reason:connect|disconnect|kick|deactivate}注册与移除监听
C
static void on_event(im_event_t* ev, void* user_data) {
/* 按 ev->type 分发,见 capabilityModel.events */
}
im_client_set_event_callback(client, on_event, NULL);相关链接
- 事件类型枚举:EventType
- 入口类:im_client_t(addEventListener / removeEventListener 的详细说明)
- 消息数据结构:Message;已读回执:ReadReceipt
- 索引:索引