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

时间:2017-11-07 04:29:35

标签: opentok tokbox

我的用户界面带有“挂断”按钮,用于结束通话。

“挂断”按钮调用session.disconnect()

在呼叫session.disconnect()时,呼叫中的其他参与者侦听streamDestroyed事件,该事件返回“clientDisconnected”的原因

根据文件: “clientDisconnected” - 通过调用disconnect()对象的Session方法或关闭浏览器,客户端与会话断开连接。

事情是,我需要区分这两种情况,以便我可以向呼叫参与者提供不同的消息。

如何通过明确挂断(调用session.disconnect())或2)关闭浏览器来判断呼叫是否结束?

1 个答案:

答案 0 :(得分:1)

唯一的原因是“networkDisconnected”意味着另一个参与者丢失了他们的互联网连接,并且“forceDisconnected”意味着参与者使用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!
  }
});