2016-04-25 62 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的配置,並且一切正常。

相關問題