如何判断 streamDestroyed 事件是由 session.disconnect() 还是浏览器关闭触发的
How to tell if a streamDestroyed event was triggered by session.disconnect() or closing of browser
我有一个带有 "Hang Up" 按钮的用户界面,用于结束通话。
"Hang Up" 按钮调用 session.disconnect()
在呼叫 session.disconnect()
时,呼叫中的其他参与者监听 streamDestroyed
事件,returns 原因 "clientDisconnected"
根据文档:
"clientDisconnected" — 客户端通过调用 Session
对象的 disconnect()
方法或关闭浏览器与会话断开连接。
问题是,我需要区分这两种情况,以便我可以向通话参与者提供不同的消息。
如何判断通话是通过 1) 显式挂断(调用 session.disconnect()
)还是 2) 关闭浏览器结束?
出于某种原因,唯一的其他选项是 "networkDisconnected",这意味着其他参与者失去了互联网连接,而 "forceDisconnected" 这意味着该参与者使用 session.forceDisconnect() 被强制断开连接.这些都不是你想要的。
如果您在挂断之前向会话中的每个人发送信号,您就可以自己跟踪挂断情况。然后在接收方跟踪是否有人发送了挂断信号。 IE。
// On the hangup side
function hangup() {
session.signal({type: 'hangup'}, function() {
session.disconnect();
});
}
// On the receiving side...
var hangups = {};
session.on('signal:hangup', function(event) {
hangups[event.from.connectionId] = true;
});
session.on('streamDestroyed', function(event) {
if (hangups[event.stream.connection.connectionId] === true) {
// They pressed the hangup button!
}
});
我有一个带有 "Hang Up" 按钮的用户界面,用于结束通话。
"Hang Up" 按钮调用 session.disconnect()
在呼叫 session.disconnect()
时,呼叫中的其他参与者监听 streamDestroyed
事件,returns 原因 "clientDisconnected"
根据文档:
"clientDisconnected" — 客户端通过调用 Session
对象的 disconnect()
方法或关闭浏览器与会话断开连接。
问题是,我需要区分这两种情况,以便我可以向通话参与者提供不同的消息。
如何判断通话是通过 1) 显式挂断(调用 session.disconnect()
)还是 2) 关闭浏览器结束?
出于某种原因,唯一的其他选项是 "networkDisconnected",这意味着其他参与者失去了互联网连接,而 "forceDisconnected" 这意味着该参与者使用 session.forceDisconnect() 被强制断开连接.这些都不是你想要的。
如果您在挂断之前向会话中的每个人发送信号,您就可以自己跟踪挂断情况。然后在接收方跟踪是否有人发送了挂断信号。 IE。
// On the hangup side
function hangup() {
session.signal({type: 'hangup'}, function() {
session.disconnect();
});
}
// On the receiving side...
var hangups = {};
session.on('signal:hangup', function(event) {
hangups[event.from.connectionId] = true;
});
session.on('streamDestroyed', function(event) {
if (hangups[event.stream.connection.connectionId] === true) {
// They pressed the hangup button!
}
});