Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

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

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

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