这是我的代码的基本结构:
var url = "https://goinstant.net/Something/SomethingElse";
goinstant.connect(url, function (err, connection, lobby) {
var something = lobby.key("something");
// and also some other stuff
});
然后,在另一个脚本文档中,但仍然在同一页面上:
var url = "https://goinstant.net/Something/SomethingElse";
goinstant.connect(url, function (err, connection, lobby) {
var something = lobby.key("something");
// and also some other stuff
});
基本完全相同的交易。除了现在谷歌Chrome给我这些错误:
WebSocket connection to 'wss://goinstant.net/engine.io/?acct=Something&app=SomethingElse&jwt=UtAhSf3vmpLNcT0…6MDbfhLZN3G4jNqmMQQjlnl&EIO=2&transport=websocket&sid=9yQO6vVBI1syXlsxAAhJ' failed: WebSocket is closed before the connection is established. platform.min.js:3
Uncaught TypeError: Cannot call method 'key' of undefined
我该如何解决这个问题?我删除了第二位代码,一切正常。
更新:现在我正在使用已批准的答案代码:
var url = "https://goinstant.net/Something/SomethingElse";
var opts = {sessionId: "", guestId: ""};
goinstant.connect(url, opts, function (err, connection, lobby) {
var something = lobby.key("something");
// and also some other stuff
});
但由于某种原因,它仍然无效。它显示了相同的错误,还有一些Access-Control-Allow-Origin
尝试通过http转到GoInstant的服务器。
另一个更新:我复制了答案的代码,然后它似乎工作正常。但我所做的就是:
我打开了大约20个Google Chrome标签页,所有标签都有相同的测试页。
前5个工作,最后15个工作没有,与之前相同的websocket错误,以及key not defined
的内容。
我知道我开始讨厌,但我该如何解决这个问题?
答案 0 :(得分:4)
在`goinstant.connect'的optionsObject parameter上使用未记录的sessionId
和guestId
属性:
var url = "https://goinstant.net/ACCOUNT/APPLICATION";
var opts = {sessionId: null, guestId: null};
var conn1, lobby1, conn2, lobby2;
goinstant.connect(url, opts, function(err, connection, lobby) {
conn1 = connection;
lobby1 = lobby;
lobby.key('conn2Key').on('set', function(value, context) {
console.log('-----------------------');
console.log('Saw a set on conn2Key');
console.log('User:', context.userId);
console.log('Value:', value);
console.log('This connection is user:', lobby.self().name.split('/')[2]);
console.log('-----------------------');
});
});
goinstant.connect(url, opts, function(err, connection, lobby) {
conn2 = connection;
lobby2 = lobby;
setTimeout(function() {
lobby.key('conn2Key').set('Hi!');
}, 1000);
});
当设置为空字符串或null
时,连接将为连接生成新的访客用户和会话。
默认情况下,GoInstant应用程序中的访客用户信息在选项卡之间共享,会话在选项卡中重复使用(因此,如果您重新加载,则可以正确重新连接)。这就是使用两个实例中断的原因;相同的sessionId
尝试连接两次。
此功能未记录且不受支持,因此将来可能会更改或中断。