Cla*_*dio 19 macos node.js socket.io
我试图了解哪些是我的应用程序的"物理"限制.
在客户端:
var socket = io.connect("http://127.0.0.1:6701");
socket.on('connect', function() {
socket.disconnect();
});
socket.on('disconnect', function() {
socket.socket.reconnect();
});
Run Code Online (Sandbox Code Playgroud)
在服务器端:
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("---");
});
});
Run Code Online (Sandbox Code Playgroud)
在OSX中我达到文件限制(256)时,统计数据如下
open: 471
closed: 235
handshaken: 471
closedA: 235
Run Code Online (Sandbox Code Playgroud)
令我困惑的是:
disconnect(),为什么我仍然使用文件句柄(所以我达到文件限制)编辑:添加延迟似乎服务器可以保持呼吸,从不达到文件限制)?谢谢
最好是客户端向服务器发送“终止”命令,然后服务器关闭连接,而不是相反。
服务器总是会等到超时才放弃连接。即使超时很短,当有大量连接进入时,它也会过载。例如,这就是为什么在应用程序服务器上禁用保持活动状态总是好的原因。
延迟会有所帮助,因为服务器有时间在打开新连接之前关闭连接。
| 归档时间: |
|
| 查看次数: |
6286 次 |
| 最近记录: |