2011-08-15 2 views
36

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

+1

Удивительный вопрос. –

ответ

52

Сердцебиение - это небольшое сообщение, отправленное с клиента на сервер (или с сервера на клиент и обратно на сервер) с периодическими интервалами, чтобы подтвердить, что клиент все еще включен и активен.

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

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

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

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

+1

Возможно, стоит выяснить, зачем они нужны? Почему сервер не обнаруживает, что клиент отключается через событие onclose/callback? – leggetter

+0

Хороший вызов, leggetter. Я немного обновил его. –

+0

Очень четкое обновление. Приветствия. – leggetter

Смежные вопросы