Javascript TokBox错误:OT。会话:无法连接,会话已未定义

Javascript TokBox错误:OT。会话:无法连接,会话已未定义,javascript,node.js,session,stream,tokbox,Javascript,Node.js,Session,Stream,Tokbox,我有一个类似的问题,但不能弄清楚这里发生了什么。我有一个.Net页面,其中包含所有用于订阅的TokBox方法。我启动一个新窗口(多个流的视频监视器),初始化客户端,将其clientSessions存储在一个数组中,并在页面上以网格模式显示订阅的流(在本例中,仅使用一个客户端)。每次打开页面时,我都会使用以下命令创建并初始化每个客户端会话: lstSessions[i] = opener.initializeClientSession(apiKey, sessionId, token, $('Pl

我有一个类似的问题,但不能弄清楚这里发生了什么。我有一个.Net页面,其中包含所有用于订阅的TokBox方法。我启动一个新窗口(多个流的视频监视器),初始化客户端,将其clientSessions存储在一个数组中,并在页面上以网格模式显示订阅的流(在本例中,仅使用一个客户端)。每次打开页面时,我都会使用以下命令创建并初始化每个客户端会话:

lstSessions[i] = opener.initializeClientSession(apiKey, sessionId, token, $('Player'+i), 'subscribe');
在开场白页面中:

function initializeClientSession(apiKey, sessionId, token, container, myAction) {
var clientSession = OT.initSession(apiKey, sessionId);
console.log('initializeClientSession: ' + sessionId);

clientSession.connect(token, function (error) {
    if (error) {
        console.log("ERROR: initializeClientSession: " + myAction + " " + error);
    }
    else {
        console.log("clientSession connected: " + myAction + " " + clientSession.id);

        switch(myAction) {
            case "publish":
                publishClientVideo(clientSession, container);
                break;
            case "subscribe":
                subscribeClientVideo(clientSession, container);
                break;
            case "delay":
                if (inPVM) publishClientVideo(clientSession, container);
                break;
        }
    }
});
return clientSession;
}

}

我关闭视频监视器并使用以下方式取消订阅流:

function unsubscribeClientVideo(clientSession, container) {
    console.log("unsubscribeClientVideo: " + clientSession.id + " " + contianer.id);
    container.style.visibility = 'hidden';
    try {
        clientSession.unsubscribe(clientSubscriber);
    }
    catch (e) {
        console.log("ERROR unsubscribeClientVideo: " + e);
    }
}
这在我第一次打开视频监视器页面时正常工作。然而,当我第二次尝试时,我得到了错误,“OT.Session:无法连接,会话已经未定义”。从控制台日志中,我得到:

initializeClientSession: 2_MX40NTk1MjgxMn5-MTUwODA2NzU5NzcxNH55WVIzNXNtREpLREl0bHlUTGxhcWJBOFV-fg
clientSession connected: subscribe 2_MX40NTk1MjgxMn5-MTUwODA2NzU5NzcxNH55WVIzNXNtREpLREl0bHlUTGxhcWJBOFV-fg
subscribeClientVideo: videoPlayer0 2_MX40NTk1MjgxMn5-MTUwODA2NzU5NzcxNH55WVIzNXNtREpLREl0bHlUTGxhcWJBOFV-fg
streamCreated: e5ad9453-aa55-41ec-b150-d8dfd5b04875
Client subscribed: inPVM = true
在第二次尝试中:

initializeClientSession: 2_MX40NTk1MjgxMn5-MTUwODA2NzU5NzcxNH55WVIzNXNtREpLREl0bHlUTGxhcWJBOFV-fg
OT.Session: Cannot connect, the session is already undefined

我在unsubscribeClientVideo中检查了clientSession,它说它已连接。实际的客户端像正常一样发布,没有任何错误或警告。那么,“会话”怎么可能是未定义的呢?我还没碰过我知道的“会议”。很明显,这里有些东西我真的不明白。非常感谢您的帮助。

我想警告“OT.Session:无法连接,会话已未定义”有点误导。在unsubscribeClientVideo功能中,您所做的只是取消订阅订阅者的一个视频源,但实际上您仍然连接到会话。简而言之,您正试图通过运行clientSession.connect()函数两次来连接到已连接到的会话。

一行修复!不知道我想弄明白这件事有多久了。我只是简单地添加了clientSession.disconnect();在未发布功能中,一切正常。那个消息太可怕了!。。把我送错方向了。谢谢你的澄清!
initializeClientSession: 2_MX40NTk1MjgxMn5-MTUwODA2NzU5NzcxNH55WVIzNXNtREpLREl0bHlUTGxhcWJBOFV-fg
OT.Session: Cannot connect, the session is already undefined