私は自分のアプリケーションの「物理的な」限界を理解しようとしています。サーバー側では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();
});
:クライアント側で
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に私は統計が
open: 471
closed: 235
handshaken: 471
closedA: 235
次されているファイルの上限(256)を打ちます
私を困惑させるものは:
- 私は強制的に接続を閉じると、これは私がクライアントの
disconnect()
としたいのですが、なぜファイルハンドルを使用しているのですか?息を止めずファイルの上限に達することはありません)? - ソケットを完全に閉じる方法はありますか?ファイルの制限にはほとんど到達していません(私は65Kにプッシュできます)。
- ファイル制限に達しているため、接続の受け入れを中止できる方法がありますか?
は、クライアントが他の方法で回避よりも、その後、接続を閉じ、サーバーに「終了」コマンドを送信した場合それは良いでしょうあなた
(編集用に感謝) – Claudio
がいる場合、クライアントでは、私は(500ミリ秒)を切断する前に、いくつかの遅延を追加し、サーバー自体を安定化し、最大ファイル制限が – Claudio
グレート質問、クラウディオに達することはありません! p.s.もっと答えを受け入れてください。 ;) –