Как принудительно закрыть соединение на стороне клиента netty - PullRequest
0 голосов
/ 29 июня 2018

Вот история, У меня есть удаленный сервер и клиент, который за брандмауэром. Клиент реализован Netty и он установит постоянное соединение с удаленным сервером. Если в канале не происходит передачи сообщений в течение 200 секунд, брандмауэр сбросит соединение, подключенное к удаленной стороне сервера, но на стороне клиента не будут приниматься tcp-пакеты (например, пакет RST), поэтому клиент считает, что это соединение живое а фактом нет. Итак, как принудительно закрыть необычное соединение, прежде чем брандмауэр неправильно обработает это соединение активности? Кстати: я не могу настроить брандмауэр

1 Ответ

0 голосов
/ 01 июля 2018

Для tcp-соединений вы должны отправить что-то, чтобы определить, активно оно или нет. Поэтому я предлагаю вам сделать что-то вроде этого:

  1. Пусть клиент регулярно отправляет контрольный пакет, чтобы поддерживать соединение. Делая это, брандмауэр будет поддерживать соединение, как вы хотите.

  2. Когда соединение разорвано, вы можете получить ошибку сразу после отправки пакета пульса. Таким образом, вы можете закрыть канал или подключить его снова.

...