在 WebRTC 中处理网络中断

Handle network interruption in WebRTC

我正在使用 Amazon Kinesis Video Streams WebRTC 在移动应用程序和网站之间建立视频聊天连接。我需要在网络端处理网络中断。让我解释一下我已经完成的步骤。

我可以在事件侦听器上检测到网络已断开...

peerConnection.addEventListener('iceconnectionstatechange', event => {
  if (event.target.connectionState === 'connected' && event.target.iceConnectionState === 
  'disconnected') {
   // do something to handle network interruption 
  }
}

在这种情况下,我会在一个循环时间间隔内向服务器发送请求(测试api)以检测网络是否正常。 在网络连接没问题的情况下,我会运行 ... (reference)

const newOffer = await peerConnection.createOffer({ iceRestart: true })
            await peerConnection.setLocalDescription(newOffer)

之后我可以看到连接已建立(connectionState/iceConnectionState 状态已连接)但我无法接收任何数据流(来自移动用户的视频冻结)。但是1分钟后,发送流将显示在移动端。

谢谢!

我发现我必须发送sdp offer。所以代码会像...

const newOffer = await peerConnection.createOffer({ iceRestart: true })
await peerConnection.setLocalDescription(newOffer)

// Send sdp offer
master.signalingClient.sendSdpOffer(peerConnection.localDescription, viewerClientID) 

现在可以正常使用了!