Преимущество / недостаток использования сердечных сокращений socketio - PullRequest
37 голосов
/ 15 августа 2011

Socket.io позволяет использовать пульс для «проверки работоспособности соединений Socket.IO». Что такое сердцебиение и почему я должен или не должен его использовать?

1 Ответ

53 голосов
/ 16 августа 2011

Пульс - это небольшое сообщение, отправляемое клиентом на сервер (или с сервера клиенту и обратно на сервер) через определенные промежутки времени, чтобы подтвердить, что клиент все еще активен.

Например, если у вас есть приложение Node.js, обслуживающее чат-комнату, и пользователь не говорит ничего в течение многих минут, невозможно определить, действительно ли они все еще подключены. Посылая сердечный ритм с заданным интервалом (скажем, каждые 15 секунд), клиент сообщает серверу, что он все еще там. Если это было, например, Через 20 секунд после получения сервером пульса от клиента он, вероятно, был отключен.

Это необходимо, потому что вам не может быть гарантировано чистое завершение соединения по TCP - если произойдет сбой клиента или произойдет что-то еще, вы не получите пакеты завершения от клиента и сервера не будет знать, что клиент отключился. Кроме того, Socket.IO поддерживает различные другие механизмы (кроме сокетов TCP) для передачи данных, и в этих случаях клиент не будет (или не может) отправлять сообщение завершения на сервер.

По умолчанию клиент Socket.IO отправляет сердцебиение на сервер каждые 15 секунд ( интервал сердцебиения ), а если сервер не получал от клиента ответ в течение 20 секунд () Тайм-аут сердцебиения ) клиент будет отключен.

Я не могу вспомнить многих средних случаев использования, когда вы, вероятно, не хотели бы использовать сердцебиение.

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