高速公路的Websocket在几个小时后停止响应

时间:2017-04-04 13:47:10

标签: javascript websocket autobahn poloniex

我在Autobahn | JS和Poloniex.com上的推送API上遇到了一个奇怪的问题。 我连接到他们的API来获取他们聊天中的所有消息,1-2小时后,websocket关闭没有错误,没有什么可以帮我调试。

我已经测试了3种语言中的行为(PHP,NodeJS和JS)和2有问题(PHP和NodeJS),我的JavaScript测试从1天开始运行没有问题。

代码非常简单:

var connection = new autobahn.Connection({url: 'wss://api.poloniex.com', realm: 'realm1'});

connection.onopen = function (session) {
   function onevent(args) {
      console.log("Message:", args[3]);
   }
   session.subscribe('trollbox', onevent);
};

connection.open();

我已经使用主管测试了NodeJS和同样的问题,1-2小时后,没有响应,没有错误,只是没有收到消息了。

我是websocket的新手,所以我想我可以测试更多但是Javascript中的所有工作都让我很困惑。

2 个答案:

答案 0 :(得分:0)

没有找到解决方案,所以我已经实施了正确的" ping"。我每隔X分钟取消订阅并订阅(我的测试运行时间为1天,间隔为5分钟)。没有更多的断开连接,也没有丢失来自trollbox的消息。

AUTOBAHN_DEBUG = true;

var autobahn = require('autobahn');

(function trollbox() {

  console.log("\n------------- OPEN CONNECTION ---------------\n");
  var connection = new autobahn.Connection({
    url: 'wss://api.poloniex.com',
    realm: 'realm1',
    max_retries: -1
  });

  connection.onopen = function (session) {
    function onevent (args) {

      // Do somethings...
      console.log(args[3]);
    }
    session.subscribe('trollbox', onevent);

    setTimeout(function () {
      console.log("\n------------- CLOSING CONNECTION ---------------\n");
      connection.close();
    }, 300000);

  };

  connection.open();

  setTimeout(trollbox, 300200);
})();

答案 1 :(得分:0)

因此trollbox现在无法正常运行,导致断线的原因是由于不活动。

如果您想查看它,可以在此处查看网站来源 here 并查看第2440行并查看trollbox订阅是否已注释。