В моей текущей реализации сервера WebSocket я реализовал следующее поведение в отношении разъединений:
- Когда WebSocket запускает событие
close
, я знаю, что клиент отключился по какой-либо причине (конечно, клиент может отправить причину отключения, чтобы облегчить мою жизнь).
- В противном случае я предполагаю, что все клиенты живы. Существует таймер, который отправляет пакет ping каждые 5 секунд всем подключенным клиентам и устанавливает для их атрибута
isAlive
значение false
. Каждый раз, когда приходит клиентский понг, соответствующий isAlive
устанавливается на true
.
- Кроме того, есть еще один таймер, который проверяет, было ли значение
isAlive
false
в течение более 10 секунд, и завершает WebSocket в этот момент и удаляет клиента с сервера.
Я хотел бы внедрить механизм переподключения, и мне нужно проверить поведение моего сервера на случайное отключение. Конечно, я мог взять свой ноутбук, подключиться к компьютеру, а затем принудительно отключить кабель WLAN, чтобы проверить, что происходит, что является громоздким. Есть ли какой-нибудь разумный способ или инструменты, чтобы подделать потерю связи?