voip-room 成员变化问题?
发布于 5 年前 作者 cgao 1889 次浏览 来自 官方Issues

wx.onVoIPChatMembersChangedwx.onVoIPVideoMembersChanged返回的openidList有问题

我用三个手机进行尝试

最后一个加入房间的手机调用wx.exitVoIPChat可以正常退出, 不会影响前两个加入房间的手机.

如果前两个中的一个通过wx.exitVoIPChat退出房间, 则还在房间中的手机的wx.onVoIPChatMembersChanged拿到的openidList只有手机自己的openid, wx.onVoIPChatMembersChanged拿到的openidList为空数组, 这样就导致整个房间都崩掉了

例如三个手机依次进入房间后, 手机2退出, 则手机1和手机3的wx.onVoIPChatMembersChanged回调参数的openidList是下面这样的

  • 手机1: openidList: ['手机1的openid']
  • 手机3: openidList: ['手机3的openid']

wx.onVoIPVideoMembersChanged回调参数的openidList是下面这样的

  • 手机1: openidList: []
  • 手机3: openidList: []

---

但按道理wx.onVoIPChatMembersChanged回调参数的openidList应该是这样的

  • 手机1: openidList: ['手机1的openid', '手机3的openid']
  • 手机3: openidList: ['手机1的openid', '手机3的openid']

wx.onVoIPVideoMembersChanged回调参数的openidList是下面这样的

  • 手机1: openidList: ['手机1的openid', '手机3的openid']
  • 手机3: openidList: ['手机1的openid', '手机3的openid']

---

下面是部分代码

  joinRoom(){
    ... //省略部分代码
    wx.joinVoIPChat({
      roomType: "video",
      signature,
      nonceStr,
      timeStamp,
      groupId,
      success: (res) => {
        console.log('res', res);
        this.setData({
          openid_list: res.openIdList
        })
        wx.onVoIPVideoMembersChanged(this.handleVideoMemberChange);
        wx.onVoIPChatMembersChanged(this.handleChatMemberChange);
      },
      fail: (err) => {
        console.log('joinVoIPChat err', err);
      }
    })
  },
  handleChatMemberChange(data){
    console.log('handleChatMemberChange', data.openIdList);
    console.log('self_openid', this.data.self_openid);
    this.setData({
      openid_list: data.openIdList
    })
  },
  handleVideoMemberChange(data){
    console.log('handleVideoMemberChange', data.openIdList);
    console.log('self_openid', this.data.self_openid);
    wx.subscribeVoIPVideoMembers({
      openIdList: data.openIdList
    })
  }
回到顶部