我有websocket nodejs服务器,有〜2000个并发连接,服务器定期关闭它们。我不知道原因。 我在我的客户端代码
中捕获它 this.ws.onclose = function(){
//try to reconnect in 5 seconds
console.log("WS CLOSED. RECONNECT IN 5 SECS");
setTimeout(function(){self.startNative()}, 5000);
};
我使用以下代码启动服务器
var WebSocketServer = require('ws');
//start websockets server
var webSocketServer = new WebSocketServer.Server({port: config.port2}, function () {
console.log("Native websocket server process running on " + config.port2);
});
//websockets connection
webSocketServer.on('connection', function(ws, req) {
ws.on('close', function() {
//somecode
});
可能导致什么?
答案 0 :(得分:2)
互联网上的中间件将关闭长时间(几分钟或几小时)没有数据的连接。您可以通过定期发送“心跳”数据包来解决此问题,例如每五分钟发送一次。
哪个方向产生心跳并不重要,另一方不需要明确回复(但可以)。如果服务器是发送心跳的服务器,这也将帮助服务器更快地修剪死连接。