如何判断 streamDestroy 事件是由 session.disconnect() 还是关闭浏览器触发的



我有一个用户界面,上面有一个用于结束通话的"挂断"按钮。

"挂断"按钮呼叫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!
  }
});

最新更新