2016-04-25 66 views
4

我对Node.js的V4.1.1与socket.io在重负载下,客户端连接到一个socket.io可能错过的node.js

当客户端连接到服务器套接字并开始工作的第一个包当时在服务器上错过了第一个数据包。

你们有什么想法背后的原因是什么?请注意,我们一次有大约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); 
    }); 
}); 
+0

是你使用rabbitmq发送这个软件包..? –

+0

是的,我使用rabbitmq和redis –

+1

然后可能会有你用于服务器的队列相同名称的问题,这意味着当你创建服务器的时候你给一些队列的名字,先检查一下。 –

回答

0

在这种情况下,实际上错误不在socket或node.js中。在mongodb错误,mongodb承受如此多的负载,所以所有的事件都迟到了。在注册过程中,新的连接也会加载。我们只是增加mongodb的配置,并且一切正常。

相关问题