session - TokBox session 被破坏

标签 session opentok tokbox

我正在尝试让客户发布 A/V 流,将其关闭,然后再重新打开。我第一次告诉他们发布然后取消发布时,效果很好。但是,下次我告诉他们发布时(使用相同的 session ID 和 token ),我收到错误“无法连接, session 已经未定义”。

为什么“ session ”会被破坏? .. 是取消发布吗?我的代码几乎取自教程:

    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);

最佳答案

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

  • 重复使用相同的发布者:https://jsbin.com/tobabos/edit?html
  • 每次都创建新的发布者:https://jsbin.com/jawuxez/edit?html

  • 注意:请提供您自己的 API key 、 session ID 和 token 以运行上述 JSbins

    关键区别在于,要重用发布者,您需要执行以下操作:
    pub.on('streamDestroyed', e => e.preventDefault());
    

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

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

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

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

    关于session - TokBox session 被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46253649/

    相关文章:

    session - Google Analytics - 根据不同的自定义变量而不是 session 来计算唯一访问次数

    asp.net - 当 StateProvider 不是 InProc 时,为什么不引发 Session_End 事件?

    ios - iOS Objective C 中的 Tokbox 屏幕共享开/关切换

    javascript - 如何更改 opentok javascript SDK 中的音频输出?

    android - 如何将opentok集成到android移动应用程序中?

    objective-c - 开放托克 : OTCameraCaptureResolutionHigh equivalent variable in swift

    mysql - 如何为所有浏览器存储无限量的 cookie 条目

    session - 为什么要使用 gorilla/context 而不是 session 来进行用户身份验证?

    ios - 基于 OpenTok API 构建的 webrtc 可以在 IE 上运行吗?

    ubuntu - FFMPEG - 合并视频后音频丢失