You need to enable JavaScript to run this app.
实时音视频

实时音视频

复制全文
微信小程序 SDK 相关
如何解决网络断开重连后用户无法进房
复制全文
如何解决网络断开重连后用户无法进房
问题描述

异常中断可能是本地网络断开,也可能是微信小程序被切换到后台,中断恢复后,SDK 无法自动重新进房。

问题解答

首先需要判断 WebSocket 在异常中断后是否已经断开。

如果 WebSocket 在异常中断后断连,则需要进行重连。

如果异常中断后 WebSocket 连接没有正常断开,由于小程序最多支持 2 个并发 WebSocket 连接,此时 SDK 尝试进房将没有可用的 WebSocket 连接。因此,你需要确保用户退出房间时调用 client.leave 来断开 WebSocket 长连接。

示例代码

在 meeting.js 中加入以下代码。

Page({
    data: {
        networkStatus: true,
    },
    onLoad() {
        wx.onNetworkStatusChange(e => {
          const isConnected = e.isConnected;

          if (isConnected && !this.data.networkStatus) {
              // 处理断网恢复
              this.reconnect();
          }
          this.setData({
            networkStatus: isConnected,
          });
        });
    },
    onShow() {
        if (this.client && this.client.state !== 'connected') {
            // 处理退后台再回前台的case
            this.reconnect();
        }
    },
    reconnect() {
        wx.showToast({
          title: `恢复连接中...`,
          icon: 'none',
          duration: 2000,
        });
        
        if (this.client) {
          this.client.destroy();
        }
        
        this.setData({ remoteStreams: [], publishUrl: '' });
        this.client = new VolcMiniappSdk.Client();
        this._handleClientEvents();
        this.join();
    },
     _handleClientEvents() {
        if (this.client) {
            this.client.removeAllListeners();
        }
        this.client.on(VolcEngineRTCMiniappSDK.EVENTS.CLOSE, (e) => {
            // 如果连接的websocket域名处于黑名单中
            // 需要销毁做重连
            this.reconnect();
        })
    }
})
最近更新时间:2023.08.28 12:05:26
这个页面对您有帮助吗?
有用
有用
无用
无用