Пишу свой UDP-сервер на Python, клиентов будет очень много, желательно определять, кто из них отключился, чтобы не слать им сообщения.
Следовательно, вопрос, как это сделать (меня интересует сам алгоритм)?
Я пока вижу так: клиент отсылает серверу сообщения, вроде "я онлайн", сервер же отключает тех клиентов, время ожидания от которых прошло. Тогда какой интервал отправки сообщений выбрать? Но из этого может получится неплохой ddos сервера.
Сейчас придумал другой способ - ведется активность клиентов, если она меньше выбранного интервала времени, то сервер сам посылает сообщение клиенту ("ты онлайн?"). Если клиент не отвечает, то сервер его удаляет из списка.
Уверен, что у Вас есть еще какие-нибудь идеи по этому поводу.
Если Вы используете UDP - значит вам доставка не важна.
Иначе - использовали бы TCP.
А так - стандарт телефонии)) Два порта: один - голос (UDP), другой - сигналка (TCP).
Вот по сигналке и гоняйте пинги, а UDP - отправили и забыли.
это уже проблема хостера... а не технологии... клиент будет Ваш? Если да - делайте им периодический GET на сервер. (чтобы не держать сокет открытым постоянно)
Да, человек выше все правильно сказала - через UDP keepalive поддерживать дело неблагодарное, используйте еще один сокет tcp для контроля. А может быть и просто отказаться от UDP.