Javascript 重新连接WebRTC对等连接的正确程序?

Javascript 重新连接WebRTC对等连接的正确程序?,javascript,reactjs,webrtc,Javascript,Reactjs,Webrtc,我正在使用WebRTC和React开发一个群组语音聊天应用程序 我已经成功建立了连接,第一次连接时语音聊天功能正常 其工作方式如下: 用户A加入聊天室 用户B加入聊天室 用户A通过切换按钮启用音频-这会通知信令服务器它们已为任何WebRTC连接打开 用户B通过切换按钮启用音频-他们现在通过服务器建立WebRTC连接过程,连接到任何启用音频的人(在本例中为用户a) 到目前为止,这一切都很顺利。我的问题是在以下场景中再次建立连接: 两个用户都启用了音频。语音通讯正常 用户B切换音频-禁用它。用户A保

我正在使用WebRTC和React开发一个群组语音聊天应用程序

我已经成功建立了连接,第一次连接时语音聊天功能正常

其工作方式如下:

  • 用户A加入聊天室
  • 用户B加入聊天室
  • 用户A通过切换按钮启用音频-这会通知信令服务器它们已为任何WebRTC连接打开
  • 用户B通过切换按钮启用音频-他们现在通过服务器建立WebRTC连接过程,连接到任何启用音频的人(在本例中为用户a)
  • 到目前为止,这一切都很顺利。我的问题是在以下场景中再次建立连接:

  • 两个用户都启用了音频。语音通讯正常
  • 用户B切换音频-禁用它。用户A保持活动状态
  • 用户B再次切换音频以重新连接到用户A
  • 我得到以下错误:

    DOMException: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote answer sdp: Called in wrong state: kStable
    
    我理解这个错误意味着连接顺序有问题。所以我想这可能与没有足够的断开过程有关

    因此,我实现了一个功能,当用户B禁用音频时,它会向房间中的所有其他用户发送一条消息,以从每个用户本地状态的对等连接数组中删除persons Peer_连接对象。但这是徒劳的

    我不明白为什么会发生这种情况,因为如果我退出聊天室并在两个用户上重新进入,连接可以再次建立,因此我认为这与旧连接的残余部分导致新连接出现问题有关

    (如果两个用户都启用了音频,那么它也可以工作,其中一个用户禁用、离开房间、返回并启用音频,而第一个用户一直启用音频。那么发送报价的客户端是否出错?)


    一如既往,我们将感谢您提供的任何提示和帮助。

    无法重新连接。对于寻求类似问题解决方案的任何人:

    不需要重新连接,只需禁用AudioTrack即可。本地这意味着没有人从你那里得到任何音频。禁用远程audiotracks显然会为您自己静音音频。静音两种方式都意味着没有音频输入或输出,这可以模拟在人留在同一房间时用拨动开关断开连接