更新时间: 2021-03-08

# 设置监听

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

当多次调用 im.watch 对同一事件进行监听时,只有最新添加的监听函数才会被执行。

# 参数说明
参数 类型 必填 说明 最低版本
message Function 接收消息时触发,结构体参考 3.0.0
status Function IM 链接状态变更时触发,链接状态码说明 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;
  },
  // 监听离线消息拉取完成
  pullFinished () {
    console.log('拉取离线消息完成')
  }
});

已复制
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
57
58
59
60
61

文档是否解决您的问题 ?

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