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 я достиг предела файла (256), статистика следующая

open: 471
closed: 235
handshaken: 471
closedA: 235

Меня озадачивает:

  • если я принудительно закрываю соединение (это то, что я хотел бы сделать с клиент disconnect () , почему я все еще использую дескриптор файла (поэтому я достиг предела файла) редактировать: добавление задержки кажется, что сервер может задерживать дыхание и никогда не достигает предела файла)?
  • Есть ли способ полностью закрыть сокет, чтобы я мог быть уверен, что предел файла редко достигается (я знаю, что могу увеличить его до 65 КБ)?
  • Есть ли способ узнать, что я достиг ограничение файла, чтобы я мог прекратить принимать соединение?

Спасибо

19
задан Matthieu Cormier 27 July 2011 в 18:10
поделиться