Socket.io 与服务器的连接有时无法正常工作

Chr*_*ang 5 vps node.js socket.io

我在 VPS 上设置了一个带有 socket.io 的 Node.JS 服务器,并且每 10 秒向所有人广播已连接客户端的数量。这通常工作得很好,但很多时候,无法建立连接,并且出现此错误(我稍微更改了 IP):

GET http://166.0.0.55:8177/socket.io/1/?t=1385120872574
Run Code Online (Sandbox Code Playgroud)

重新加载站点后,通常可以建立连接,尽管我不知道为什么会首先发生连接失败,也不知道如何调试socket.io代码。有时我无法再连接到服务器,必须重新启动服务器。

附加信息:

  • 我的主站点运行在与 Node.js 服务器不同的服务器上(使用带有 CakePHP 的 LAMP 环境)。
  • 我用永远来运行服务器
  • 我有很多连接的客户端(大约 1000 个)
  • 我的 VPS 有 512 MB RAM,CPU 从未高于 25%

Pai*_*dee 3

在 top 命令之后,尝试:

socket.on('error', function (err) { 
   console.log("Socket.IO Error"); 
   console.log(err.stack); // this is changed from your code in last comment
});
Run Code Online (Sandbox Code Playgroud)

另外,您可以尝试较慢的运输。Socket.io 默认使用 Websocket,但如果您的服务器无法分配足够的资源,您可以尝试其他传输速度较慢但使用资源较少的传输

io = socketIo.listen(80);
io.set('transports', ['xhr-polling']);
Run Code Online (Sandbox Code Playgroud)