nchan_websocket_client_heartbeat

Директива nchan_websocket_client_heartbeat задаёт интервал отправки heartbeat-сообщений по WebSocket-соединению для поддержания активной сессии.

Синтаксисnchan_websocket_client_heartbeat interval [data];
По умолчаниюnone
Контекстserver, location, if in location
Аргументы2

Описание

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-сообщениях может привести к повышенному использованию пропускной способности и потенциальным проблемам с задержкой сети.

← Ко всем директивам