如何判断 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!
  }
});