webrtc连接断开但声音仍然打开

时间:2015-04-06 17:44:44

标签: webrtc

我有一个使用WebRTC的视频聊天应用程序。有一个小问题:下面是我的oniceconnectionstatechage代码:

connection.oniceconnectionstatechange = function () {
    if (connection.iceConnectionState == 'disconnected' || connection.iceConnectionState == 'closed')
        console.log('connection gone.')
};

问题在于,有时候,当互联网速度不好时,我的连接断开连接,我在控制台看到“连接已消失”,但声音仍然存在。双方可以互相听到,但视频已经消失。我可以做些什么来完全断开我的连接呢?

1 个答案:

答案 0 :(得分:0)

当网络连接不稳定时,您会在控制台中看到connection gone,因为iceConnectionState的状态可能为disconnected

  

瞬态,e。 G。在片状网络上,可以自行恢复。   (Mozilla Developer Network)

可能是 - 这是一个假设 - 在某些/很多情况下,由于可用带宽无法同时支持音频和视频,视频会被删除。

如果您确实想在断开连接时完全关闭连接,可以在 oniceconnectionchange listerner中替换if语句(包括 console.log )以下代码:

if (connection.iceConnectionState == 'disconnected'){
   console.log('Connection gone. Closing connection.');
   connection.close();
}

因此,每个disconnect之后都会完全关闭连接。

然而,这可能是不好的做法: 为什么要关闭整个连接只是因为网络存在暂时性问题? 我假设在实际应用程序中使用此代码会导致糟糕的用户体验,因为在许多情况下,用户不会注意到断开连接。我建议最好在(频繁)断开连接时向用户显示警告。