我有一个使用WebRTC的视频聊天应用程序。有一个小问题:下面是我的oniceconnectionstatechage代码:
connection.oniceconnectionstatechange = function () {
if (connection.iceConnectionState == 'disconnected' || connection.iceConnectionState == 'closed')
console.log('connection gone.')
};
问题在于,有时候,当互联网速度不好时,我的连接断开连接,我在控制台看到“连接已消失”,但声音仍然存在。双方可以互相听到,但视频已经消失。我可以做些什么来完全断开我的连接呢?
答案 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
之后都会完全关闭连接。
然而,这可能是不好的做法: 为什么要关闭整个连接只是因为网络存在暂时性问题? 我假设在实际应用程序中使用此代码会导致糟糕的用户体验,因为在许多情况下,用户不会注意到断开连接。我建议最好在(频繁)断开连接时向用户显示警告。