Как работает setKeepAlive в node.js и как его реализовать? - PullRequest
2 голосов
/ 05 сентября 2011

Не могу понять философию метода setKeepAlive в сетевых сокетах Node.js.Что происходит после завершения initialDelay?

1 Ответ

7 голосов
/ 05 сентября 2011

Этот метод управляет функциональностью поддержания активности TCP в базовом сокете TCP. Проверьте эту статью для получения информации о TCP Keepalive. Вот фрагмент, который объясняет, что делает initialDelay («таймер keepalive»):

2,1. Что такое TCP-keepalive?

Концепция keepalive очень проста: при настройке TCP-соединения вы связываете набор таймеров. Некоторые из этих таймеров имеют дело с процедурой keepalive. Когда таймер активности активности достигает нуля, вы отправляете партнеру пакет проверки активности, в котором нет данных, а флаг ACK включен. Вы можете сделать это из-за спецификаций TCP / IP, как своего рода дубликат ACK, и удаленная конечная точка не будет иметь аргументов, поскольку TCP является потоково-ориентированным протоколом. С другой стороны, вы получите ответ от удаленного хоста (который вообще не должен поддерживать keepalive, только TCP / IP) без данных и установленного ACK.

Если вы получите ответ на запрос проверки активности, вы можете утверждать, что соединение все еще работает и не беспокоится о реализации на уровне пользователя. Фактически, TCP позволяет вам обрабатывать поток, а не пакеты, поэтому пакет данных нулевой длины не опасен для пользовательской программы.

Эта процедура полезна, потому что если другие узлы теряют свое соединение (например, при перезагрузке), вы заметите, что соединение разорвано, даже если у вас нет трафика на нем. Если ваш одноранговый тест не отвечает на запросы активности активности, вы можете утверждать, что соединение не может считаться действительным, и затем предпринимать правильные действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...