监听聊天室事件
监听聊天室事件:聊天室是无人数上限、不保证历史持久化的实时房间;进房/退房与成员、房间信息查询由 IMLib 提供。
适用场景
- 直播/活动房间的实时消息
- 进出房提示与在线成员展示
- 房间信息与成员列表刷新
前置条件
- 服务端已开通聊天室服务
- 已连接 IMLib 且拿到有效 Token
- 业务侧维护房间生命周期
能力与 API
以下操作来自冻结的 sdk-imlib.json;签名与参数逐字取自 sdk-bindings.json → bindings.ios.imlib.methodMap。
| 操作 | Swift 签名 | 返回 | 参数 |
|---|---|---|---|
addEventListener | func addEventListener(_ event: IMPEvent, listener: IMPEventListener) -> Void | null | event:string, handler:function |
完整字段与错误码见 API 参考;示例可直接复制到 Swift/Objective-C 工程。
Swift / Objective-C 示例
// ios-imlib/chatroom/monitor-events
let roomEvent: IMPChatroomEventKind = .joined
print(roomEvent)IMPOSListenerToken *listenerToken = [client addEventListener:@"messages" handler:^(IMPOSEvent *event) {
/* 处理事件载荷(event.type / event.payload) */
}];错误处理
IMLib 不 throw:检查 res.code。常见:1002 Token 无效、1001 参数错误、3001 未连接(可重试)、3002 超时。完整码表见 状态码。
与融云对应页 / 差异
| 项 | 内容 |
|---|---|
| 融云页面 | ios-imlib/chatroom/monitor-events(监听聊天室事件) |
| 融云接口状态 | 部分覆盖(主路径可用,子能力缺失) |
| 我方对应 | CHATROOM_EVENT |
| 差异说明 | 事件 kind 仅 joined/left/kicked/destroyed/member_changed;缺 joining、join_failed、reset(断线重回房间)三类回调 |
相关错误码
| 错误码 | 名称 | 含义 | 处理 |
|---|---|---|---|
1001 | INVALID_PARAMETER | 参数错误 | 修正参数/权限后重试 |
1002 | INVALID_TOKEN | Token 无效或已过期 | 修正参数/权限后重试 |
1007 | MESSAGE_TOO_LARGE | 消息体过大(上限 5KB) | 修正参数/权限后重试 |
1009 | GROUP_MUTED | 你已被禁言 | 修正参数/权限后重试 |
1010 | SENSITIVE_WORD | 内容包含敏感词 | 修正参数/权限后重试 |
3001 | SDK_NOT_CONNECTED | 长连接未就绪 | 可重试(退避) |
3002 | SDK_TIMEOUT | 请求超时 | 可重试(退避) |
3003 | SDK_NETWORK_ERROR | 网络错误 | 可重试(退避) |
排查建议
- 先确认
client.getConnectionStatus()为 connected,再调用业务 op。 - 按错误码区分:1001/1007 修正参数;1002/1003 重新登录;3001/3002 退避重试。
- 本地数据异常时先查看本地库路径与迁移日志,再清缓存复现。