我试图了解哪些是应用程序的“物理”限制。
在客户端:
var socket = io.connect("http://127.0.0.1:6701"); socket.on('connect', function() { socket.disconnect(); }); socket.on('disconnect', function() { socket.socket.reconnect(); });
在服务器端:
var io = require('socket.io').listen(6701); io.sockets.on('connection', function(socket) { socket.on('disconnect', function(reason) { var o = Object.keys(socket.manager.open).length , c = Object.keys(socket.manager.closed).length , cA = Object.keys(socket.manager.closedA).length , h = Object.keys(socket.manager.handshaken).length console.log("open: " + o) console.log("closed: " + c) console.log("handshaken: " + h) console.log("closedA: " + cA) console.log("---"); }); });
在OSX中达到文件限制(256)时,统计信息如下
open: 471 closed: 235 handshaken: 471 closedA: 235
让我感到困惑的是:
disconnect()
谢谢
如果客户端向服务器发送一个“终止”命令,然后关闭连接,最好比其他方法更好。
服务器将始终等待超时直到放弃连接。即使超时很小,但有大量连接进入,它也会使它过载。例如,这就是为什么在应用程序服务器上禁用保持活动总是好的。
延迟有所帮助,因为服务器有时间在打开新连接之前关闭连接。