我有一个用户界面,上面有一个用于结束通话的"挂断"按钮。
"挂断"按钮呼叫session.disconnect()
在呼叫session.disconnect()
呼叫时,呼叫中的另一个参与者侦听返回"客户端已断开连接"原因的streamDestroyed
事件
根据文档:"clientDisconnected" — 通过调用Session
对象的 disconnect()
方法或关闭浏览器而与会话断开连接的客户端。
问题是,我需要区分这两种情况,以便我可以向呼叫参与者提供不同的消息传递。
如何判断呼叫是否以 1) 显式挂断(呼叫session.disconnect()
)或 2) 关闭浏览器结束?
由于某种原因,唯一的其他选项是"网络断开连接",这意味着其他参与者失去了互联网连接,以及"强制断开连接",这意味着参与者使用session.forceDisconnect()强制断开连接。这些都不是你想要的。
不过,如果您在挂断之前向会话中的每个人发送信号,您可以自己跟踪挂断。然后在接收端跟踪是否有人发送了挂断信号。即。
// 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!
}
});