在负载很重的情况下,连接到socket.io的客户端可能会错过带有node.js的第一个数据包

时间:2016-04-25 06:30:02

标签: node.js socket.io

我在Node.js v4.1.1上并使用socket.io

当客户端连接到服务器套接字并在那时开始交换软件包时,第一个数据包在服务器上丢失。

你知道这背后的原因是什么?请注意,我们一次有大约900个连接。

var http = module.exports = require('http');
var app = module.exports = express();
var httpsOptions = {
   key: fs.readFileSync('server.key'),
   cert: fs.readFileSync('certificate.crt')
};
var Server = https.createServer(httpsOptions, app);
var io = module.exports = require('socket.io').listen(Server);
io.set("transports", ["xhr-polling", "web socket", "polling", "htmlfile"]);
io.sockets.on("connection", function(socket)
{
   client.on('msg', function(request)
   {
      console.log("event get --> " + request);
   });
   client.on('error', function(exc)
   {
      console.log("ignoring exception: " + exc);
   });
   client.on('ping', function(request)
   {
      client.emit('pong', request);
      client.removeListener('ping', function() {});
   });
   client.on('disconnect', function(reason)
   {
      console.log("socket disconnect " + reason);
   });
});

1 个答案:

答案 0 :(得分:0)

在这种情况下,实际上错误不在socket或node.js中。 mongodb中的错误,mongodb占用了很多负载所以所有事件都迟到了。注册过程中新的连接也需要加载。我们只需增加mongodb的配置,一切运行良好。