Ped*_*olo 18 javascript html5 video-streaming html5-video webrtc
我一直在实施webrtc视频聊天.
除了对等关闭浏览器的情况外,一切都顺利进行.
我一直试图通过在远程媒体流上实现一个关于回调的回调来处理这个事件.但是,这个回调似乎从未被调用过.
如何检测对等方的浏览器已关闭或另一方已完成连接?
Mar*_*S95 22
您可以使用ICE连接状态来确定这一点.如果断开一个对等体,它需要几秒钟(~5?)才能识别它,但即使没有信号服务器它也可以工作.
(假设您调用了对等连接pc)
pc.oniceconnectionstatechange = function() {
if(pc.iceConnectionState == 'disconnected') {
console.log('Disconnected');
}
}
Run Code Online (Sandbox Code Playgroud)
使用信令网关向您要离开的所有连接对等体发送消息; 像这样:
window.addEventListener('beforeunload', function () {
userLeft();
}, false);
window.addEventListener('keyup', function (e) {
if (e.keyCode == 116)
userLeft();
}, false);
function userLeft() {
signalingGateway.send({
userLeft: true,
whoLeft: 'user-id'
});
}
signalingGateway.on('message', function (signal) {
if (signal.userLeft && signal.whoLeft != 'current-user-id') {
var relevantPeer = listOfPeers[signal.whoLeft];
if (relevantPeer) {
relevantPeer.close();
relevantPeer = null;
}
var relevantLocalStreams = listOfLocalStreams[signal.whoLeft];
if (relevantLocalStreams.length) {
for (var i = 0; i < relevantLocalStreams.length; i++) {
if (relevantLocalStreams[i].stop) {
relevantLocalStreams[i].stop();
}
// it is suggested to stop media tracks instead!
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7629 次 |
| 最近记录: |