nchan_websocket_client_heartbeat
Директива nchan_websocket_client_heartbeat задаёт интервал отправки heartbeat-сообщений по WebSocket-соединению для поддержания активной сессии.
Описание
nchan_websocket_client_heartbeat директива используется в модуле NGINX Nchan для указания интервала в секундах, через который отправляются heartbeat-сообщения по активному WebSocket-соединению. Это особенно важно для того, чтобы простаивающие WebSocket-соединения оставались открытыми и не закрывались ошибочно промежуточными прокси или брандмауэрами из-за неактивности.
При настройке NGINX будет периодически отправлять сообщение по каналу WebSocket для проверки состояния соединения. Это помогает поддерживать постоянное соединение, удерживая клиента вовлечённым, и критично для приложений, требующих передачи данных в реальном времени. Директива принимает два аргумента: первый задаёт интервал отправки heartbeat, а второй определяет полезную нагрузку данных (если есть), которая должна отправляться в этих heartbeat-сообщениях. По умолчанию интервал heartbeat не задан, то есть heartbeat-сообщения отправляться не будут, пока он явно не указан.
В зависимости от требований приложения важно правильно настроить эту директиву для оптимизации производительности WebSocket. Слишком длинные интервалы могут привести к разрыву соединений, тогда как слишком частые heartbeat-сообщения могут привести к ненужному трафику и дополнительной нагрузке на обработку как со стороны серверов, так и со стороны клиентов.
Пример конфига
location /ws {
nchan_websocket_client_heartbeat 30 "{"keep_alive": true}";
}Убедитесь, что интервал heartbeat не конфликтует с другими тайм-аутами, такими как механизмы WebSocket ping-pong.
Отправка больших payloads в heartbeat-сообщениях может привести к повышенному использованию пропускной способности и потенциальным проблемам с задержкой сети.