Цитата:
|
А как вы узнаете о том, что на сокет поступили данные от клиента? Для того, чтобы не бегать по всем подключениям подряд используют select или poll в зависимости от языка
|
Похоже мы друг друга не понимаем малость.
Допустим клиент коннектится к серверу, при этом создается новый объект Client, через который и происходит все общение с flash клиентом.
Он начинает через 900 милисекунд слать этому клиенту сообщение _hb (в независимости от того, шлются какие-то другие сообщения или нет). При отправке _hb сообщения, фиксируется время его отправки. С этого момента начинается ожидание ответа клиента. Если в течение 6000 милисекунд клиент ничего не ответил, соединение считается дохлым. Все ридеры и райтеры глушатся, и отправляется событие дисконнекта. Менеджер клиентов его получает, и сносит target клиент из общего списка. Таким образом в списке всегда только живые сокеты.
Цитата:
|
Хотелось бы получить проблемный сокет в селекте, но видимо это невозможно.
|
Точно так же по событию DISCONNECTED можно его в список проблемных затолкать. Только зачем?