全部文档

( 最近更新时间:2020-04-28 19:00:00 )

# 设置监听

初始化完成后,应在建立连接之前im 对象添加事件监听器,及时获取相关事件通知。

当多次调用 im.watch 对同一事件进行监听时,添加的每个监听函数都会被执行。

# 参数说明
参数 类型 必填 说明 最低版本
message Function 接收消息时触发,结构体参考 (opens new window) 3.0.0
status Function IM 链接状态变更时触发,链接状态码说明 (opens new window) 3.0.0
conversation Function 会话列表有变更时触发 3.0.0
chatroom Function 聊天室 KV 数据变化时触发 3.0.6
expansion Function 消息扩展数据变更时触发 3.0.7
# 代码示例
  1. 所有代码示例中的 im 均指通过 RongIMLib.init() 获取的实例对象
  2. 以下示例中假定存在 getExistedConversationList 方法,以获取当前已存在的会话列表数据
// 添加事件监听
im.watch({
  // 监听会话列表变更事件
  conversation (event) {
    // 假定存在 getExistedConversationList 方法,以获取当前已存在的会话列表数据
    const conversationList = getExistedConversationList()
    // 发生变更的会话列表
    const updatedConversationList = event.updatedConversationList;
    // 通过 im.Conversation.merge 计算最新的会话列表
    const latestConversationList = im.Conversation.merge({ conversationList, updatedConversationList })
  },
  // 监听消息通知
  message (event) {
    // 新接收到的消息内容
    const message = event.message;
  },
  // 监听 IM 连接状态变化
  status (event) {
    console.log('connection status:', event.status);
  },
  // 监听聊天室 KV 数据变更
  chatroom (event) {
    /**
     * 聊天室 KV 存储数据更新
     * @example
     * [
     *  {
     *    "key": "name",
     *    "value": "我是小融融",
     *    "timestamp": 1597591258338, 
     *    "chatroomId": "z002", 
     *    "type": 1 // 1: 更新( 含:修改和新增 )、2: 删除
     *  },
     * ]
     */
    const updatedEntries = event.updatedEntries
  },
  expansion (event) {
    /**
     * 更新的消息拓展数据
     * @example {
     *    expansion: { key: 'value' },      // 设置或更新的扩展值
     *    messageUId: 'URIT-URIT-ODMF-DURR' // 设置或更新扩展的消息 uid
     * }
     */
    const updatedExpansion = event.updatedExpansion;
    /**
     * 删除的消息拓展数据
     * @example {
     *    deletedKeys: ['key1', 'key2'],    // 设置或更新的扩展值
     *    messageUId: 'URIT-URIT-ODMF-DURR' // 设置或更新扩展的消息 uid
     * }
     */
    const deletedExpansion = event.deletedExpansion;
});

已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助