几个小时后,带有高速公路的 Websocket 停止响应
Websocket with Autobahn stop responding after some hours
我对 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();
我已经用 Supervisor 测试了 NodeJS 和同样的问题,1-2 小时后,没有响应,没有错误,只是不再收到消息。
我是 websocket 的新手,所以我想我可以测试更多,但在 Javascript 中一切正常的事实让我感到困惑。
没有找到解决方案,所以我实施了正确的 "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);
})();
因此 trollbox 现在无法正常工作,您断开连接的原因是由于不活动。
如果你想查看它,你可以在这里查看网站源代码 here
并查看第 2440 行,看到 trollbox 订阅已被注释。
我对 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();
我已经用 Supervisor 测试了 NodeJS 和同样的问题,1-2 小时后,没有响应,没有错误,只是不再收到消息。
我是 websocket 的新手,所以我想我可以测试更多,但在 Javascript 中一切正常的事实让我感到困惑。
没有找到解决方案,所以我实施了正确的 "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);
})();
因此 trollbox 现在无法正常工作,您断开连接的原因是由于不活动。
如果你想查看它,你可以在这里查看网站源代码 here 并查看第 2440 行,看到 trollbox 订阅已被注释。