Session TokBox会话被破坏

Session TokBox会话被破坏,session,opentok,tokbox,Session,Opentok,Tokbox,我正在尝试让客户端发布a/V流,关闭它们,然后再打开它们。我第一次告诉他们发布然后取消发布,效果很好。但是,下一次我告诉他们发布(使用相同的会话ID和令牌)时,我会得到错误“无法连接,会话已经未定义” 为什么“会话”会被破坏?。。是非公开的吗?我的代码基本上取自教程: clientSession = OT.initSession(apiKey, sessionId); clientSession.connect(token, function (error) {

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

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

  • 重复使用同一发布服务器:
  • 每次创建新的发布服务器:
  • 注意:请提供您自己的API密钥、会话ID和令牌以运行上述JSBIN

    关键区别在于,要重用发布服务器,您需要执行以下操作:

    pub.on('streamDestroyed', e => e.preventDefault());
    
    这里记录了这一点:

    它确保在取消发布时,不会销毁发布者对象,以便可以重用它

    如果重用发布服务器,则发布服务器仍保留在页面上,用户仍然可以看到自己。即使发布服务器没有流式传输到会话。您可以使用CSS或DOM操作隐藏发布者,但网络摄像头指示灯将保持亮起

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