![]() |
|
||||||||||
|
|||||
|
Здравствуйте.
Имеется сервак на php и клиенты на flex. По сути - чат. Коннект между клиентами и сервак реализован через сокеты. Все за мечательно, но есть один нюанс: бывает такое, что человек уходит, а сокет не разрывается. Нагуглил, что такое решается пингом. Только не совсем понятно, как именно это реализовать? Вот мои соображения: Сервер раз в 5 секунд, например, отправляет всем клиентам пингующий пакет. Клиент получает его и отправляет ответ. Если ответ от клиента не пришел в течение нескольких секунд, то серв разрывае сокет. Встает ряд вопросов: 1) как отправлять пакет раз в 5 секунд? Ставить какой-то таймер или что? 2) допустим, отправил я пакет, теперь надо засечь время. Если по истечении его ответа нет - разорвать сокет. Как зачечь время? Что-то в этой теории совершенно не верно. Скорее всего, пинговать должны клиенты сервак, но, как сервак узнает, что его перестали пинговать? Есть еще идея, что клинты раз в 5 секунд обновляют время последнего пинга в какой-то переменной своего объекта. Сервак постоянно мониторит эти переменные, как только время с момента последнего пинга превышает заданный интервал - сокет разрывается. Пока что данный метод считаю наиболее правильным. Но может еще еще способы? А может вообще не нужен пинг в данной ситуации? Как тогда можно решить проблему мертвых сокетов? Спасибо. |
![]() |
Часовой пояс GMT +4, время: 11:39. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|