
23.09.2010, 17:44
|
|
Регистрация: Jul 2010
Адрес: 59.939039, 30.315785
Сообщений: 65
|
пинг сервером клиентов
Здравствуйте.
Имеется сервак на php и клиенты на flex. По сути - чат. Коннект между клиентами и сервак реализован через сокеты. Все за мечательно, но есть один нюанс: бывает такое, что человек уходит, а сокет не разрывается. Нагуглил, что такое решается пингом. Только не совсем понятно, как именно это реализовать?
Вот мои соображения:
Сервер раз в 5 секунд, например, отправляет всем клиентам пингующий пакет. Клиент получает его и отправляет ответ. Если ответ от клиента не пришел в течение нескольких секунд, то серв разрывае сокет. Встает ряд вопросов:
1) как отправлять пакет раз в 5 секунд? Ставить какой-то таймер или что?
2) допустим, отправил я пакет, теперь надо засечь время. Если по истечении его ответа нет - разорвать сокет. Как зачечь время?
Что-то в этой теории совершенно не верно. Скорее всего, пинговать должны клиенты сервак, но, как сервак узнает, что его перестали пинговать?
Есть еще идея, что клинты раз в 5 секунд обновляют время последнего пинга в какой-то переменной своего объекта. Сервак постоянно мониторит эти переменные, как только время с момента последнего пинга превышает заданный интервал - сокет разрывается. Пока что данный метод считаю наиболее правильным. Но может еще еще способы?
А может вообще не нужен пинг в данной ситуации? Как тогда можно решить проблему мертвых сокетов?
Спасибо.
|