首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在同一个页面上连接两次GoInstant?

如何在同一个页面上连接两次GoInstant?
EN

Stack Overflow用户
提问于 2013-10-27 09:40:31
回答 1查看 202关注 0票数 2

这是我的代码的基本结构:

代码语言:javascript
复制
var url = "https://goinstant.net/Something/SomethingElse";
goinstant.connect(url, function (err, connection, lobby) {
  var something = lobby.key("something");
  // and also some other stuff
});

然后,在另一个脚本文档中,但仍然在同一页上:

代码语言:javascript
复制
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给了我这些错误:

代码语言:javascript
复制
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 

我该怎么解决这个问题?我删除第二段代码,一切都正常。

更新:,所以现在我使用的是已批准的答案的代码:

代码语言:javascript
复制
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个选项卡,它们都有相同的测试页面。

前5个工作,而最后15个没有工作,与以前相同的websocket错误,还有一些关于key not defined的东西。

我知道我开始变得讨厌了,但我该怎么解决呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-27 14:17:02

在‘goinstt.Connection’的sessionIdguestId属性中使用未记录的optionsObject参数

代码语言:javascript
复制
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尝试两次连接。

该特性没有文档化,也不受支持,因此它将来可能会更改或中断。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19616628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档