【问题标题】:TokBox sessions getting destroyedTokBox 会话被破坏
【发布时间】:2017-09-18 09:48:39
【问题描述】:

我正在尝试让客户端发布 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);

【问题讨论】:

    标签: session opentok tokbox


    【解决方案1】:

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

    1. 重用同一个发布者:https://jsbin.com/tobabos/edit?html
    2. 每次创建新发布者:https://jsbin.com/jawuxez/edit?html

    注意:请提供您自己的 API 密钥、会话 ID 和令牌来运行上述 JSbin

    关键区别在于,要重用发布者,您需要这样做:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-02-23
      • 2013-10-31
      • 2012-07-24
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 2014-07-02
      相关资源
      最近更新 更多