socket.io与轮询,常量连接/断开有关
所以这是一个更大的应用程序的一部分,我试图使用集群和socket.io-redis运行,因此如果我需要在未来进行扩展,它将适用于多个节点和机器。
我似乎遇到了一些客户无法维持连接的严重问题。一些客户持续这样做(主要是iOS设备,我认为必须使用轮询传输),但其他客户端有时会工作,有时候不会(这也是我使用轮询的原因)。
我剥离了一切,结果发现群集不是问题。
无论如何我的server.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var port = process.env.PORT || 3800;
/* -------------------------------- */
io.on('connection', function(socket){
var datetime = new Date().toLocaleString();
console.log(datetime+' - '+'a user connected - '+socket.id);
});
/* -------------------------------- */
http.listen(port, function() {
var datetime = new Date().toLocaleString();
console.log(datetime+' - '+'listening on *:' + port);
});
并在控制台中输出
Wed Mar 11 2015 16:22:53 GMT+0000 (GMT) - listening on *:3800
Wed Mar 11 2015 16:22:54 GMT+0000 (GMT) - a user connected - YrLUOrgfpnQVwoWMAAAA
Wed Mar 11 2015 16:22:58 GMT+0000 (GMT) - a user connected - nH6x-97uf3iR2LgNAAAB
Wed Mar 11 2015 16:23:01 GMT+0000 (GMT) - a user connected - VsrFO31elPyKfQJcAAAC
Wed Mar 11 2015 16:23:08 GMT+0000 (GMT) - a user connected - 7xuKZ6aykYIDcxN-AAAD
Wed Mar 11 2015 16:23:15 GMT+0000 (GMT) - a user connected - ZsmZtFHmLrH1DxXWAAAE
Wed Mar 11 2015 16:23:22 GMT+0000 (GMT) - a user connected - HFUApMwwFZallJnQAAAF
这只是无限期地继续下去。我正在用iPad测试它,客户端从appgyver超音速应用程序(cordova和javascript)加载。
我在使用socket.io聊天示例的分支时遇到了同样的问题,修改了集群使用--
我的问题:为什么有些客户无法保留连接?如何使用轮询传输修复这些问题而不维护单个会话?
回答如下:这可能是由于node.js的单线程架构。
看看这里的答案:https://stackoverflow/a/51524799/996926