Delphi XE 7 Indy IRC обнаруживает потерю соединения

Все работает хорошо, но иногда через много часов связь может быть потеряна. Как я должен определить, что чат больше не работает? Должен ли я использовать событие PING/PONG, чтобы обнаружить это? Это случается очень редко, но все же может случиться. Спасибо за предложения.


person mca64    schedule 27.09.2014    source источник
comment
Эээ, какую версию Delphi вы используете? Читали ли вы RFC (tools.ietf.org/html/rfc2812#section- 3.7.2)?   -  person Harriv    schedule 27.09.2014
comment
Вы должны периодически PING обслуживать свой сервер, но это никак не связано с Delphi.   -  person Free Consulting    schedule 27.09.2014
comment
Я использую Delphi XE 7   -  person mca64    schedule 27.09.2014
comment
@mjn, это неправда. 100% серверов, которые я видел в дикой природе, соответствовали протоколу.   -  person Free Consulting    schedule 27.09.2014


Ответы (1)


Да, команды IRC PING и PONG следует использовать для повышения стабильности соединения.


Сервер и клиент могут отправлять «пустые» сообщения (no-op, heart-beat), чтобы поддерживать соединение. Если одна из сторон больше не получает эти сообщения, соединение можно считать потерянным. Затем сервер может просто закрыть соединение, если обнаружит, что клиент не отвечает. Клиент может отобразить сообщение об ошибке и предложить пользователю повторно подключиться или выполнить повторное подключение автоматически.

Добавление только сообщений об отсутствии операций (тактовых импульсов) поможет сохранить стабильное соединение, поскольку некоторые сетевые компоненты могут решить разорвать соединение после длительного бездействия.

person mjn    schedule 27.09.2014
comment
Тьфу... Разве это не цель PING? Пожалуйста, рассмотрите возможность чтения спецификаций протокола. - person Free Consulting; 27.09.2014
comment
@FreeConsulting извините за недоразумение, отредактировано - person mjn; 27.09.2014