node.js - socket.io 轮询问题,持续连接/断开连接

标签 node.js cordova socket.io steroids

所以这是一个更大的应用程序的一部分,我试图使用集群和 socket.io-redis 运行它,以便在我将来需要扩展时它可以跨多个 Node 和机器工作。

我似乎遇到了一些客户端无法保持连接的严重问题。一些客户端坚持这样做(主要是 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 聊天示例的分支时遇到了同样的问题,为集群使用进行了修改 - https://github.com/evilstudios/chat-example-cluster

我的问题:为什么有些客户端无法保持连接?如何解决轮询传输不维护单个 session 的这些问题?

最佳答案

你必须更新你的 socket.io 前端和后端包,否则你将在传输套接字的方式上出现故障,前端将使用轮询,因此你将有大量的套接字断开连接....

解决方案:前后更新你的socket.io包的版本

关于node.js - socket.io 轮询问题,持续连接/断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28992707/

相关文章:

node.js - 由于以下错误,无法安装 tsd 软件包

node.js - 如何避免在错误响应中将错误集合包装在 Apollo Server V2 的错误对象中

javascript - Sequelize : user. checkPassword 不是函数

cordova - 使用 Java native 文件构建 Phonegap

ios - cordova/phonegap 远程内容插件不工作 ios

javascript - socket.io - 通过发送更少的字符来优化流量

javascript - Socket.IO SSL 连接错误不使用express

python - 使用套接字(NodeJS,Socket.io)将数据从 Python 发送到 Node 服务器

javascript - Visual Studio Code 中的 .ts 文件没有智能感知

jquery - 如何使用 jquery/ajex 为 phonegap 解析 "Remote "xml 文件?