TokBox会话被破坏

时间:2017-09-16 11:58:42

标签: session opentok tokbox

我试图让客户发布A / V流,关闭它们,然后重新打开它们。我第一次告诉他们发布然后取消发布,它工作正常。但是,下次我告诉他们发布时(使用相同的会话ID和令牌),我收到错误"无法连接,会话已经未定义"。

为什么"会话"被破坏了?是不是发布了?我的代码几乎取自教程:

    clientSession = OT.initSession(apiKey, sessionId);
    clientSession.connect(token, function (error) {
        if (error) {
            handleError(error);
        } else {
        clientPublisher = OT.initPublisher(container, {
        insertMode: 'append',
        width: '100%',
        height: '100%'
        }, handleError);
        }
    });
}

取消发布:

clientSession.unpublish(clientPublisher);

1 个答案:

答案 0 :(得分:2)

有两种方法可以做到这一点。您可以初始化一个发布者对象,并在每次重新发布时继续重复使用它。或者,您每次都可以继续销毁和重新初始化新发布者。我已经为你写了两个方法的例子:

  1. 重复使用同一发布商:https://jsbin.com/tobabos/edit?html
  2. 每次创建新发布商:https://jsbin.com/jawuxez/edit?html
  3. 注意:请提供您自己的API密钥,会话ID和令牌来运行上述JSbins

    关键区别在于重用发布者需要执行此操作:

    pub.on('streamDestroyed', e => e.preventDefault());
    

    此处记录了这些内容:https://tokbox.com/developer/sdks/js/reference/Publisher.html#.event:streamDestroyed

    确保在取消发布时,发布者对象不会被销毁,因此可以重复使用。

    如果您重复使用发布者,也会发生这种情况,发布者仍然在页面上,用户仍然可以看到自己。即使发布者没有流式传输到会话。您可以使用CSS或DOM操作隐藏发布者,但网络摄像头指示灯将保持打开状态。

    但是,如果您每次销毁并重新创建发布者,则发布者会从页面中消失,而网络摄像头指示灯会在未发布时关闭。根据浏览器和用户的设置,可能会要求他们再次允许访问其网络摄像头。