Назад | Перейти на главную страницу

Тайм-аут Nginx для websocket

Я подключаю клиента с websocket через Nginx (как обратный прокси) к основному приложению asp.net. Между сервером и клиентом существуют команды пульса, чтобы соединение с веб-сокетом оставалось открытым.

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

Я пробовал несколько тайм-аутов без какого-либо эффекта. (proxy_send_timeout, client_body_timeout, keepalive_timeout, send_timeout...) Единственный тайм-аут, который мне удалось установить, был proxy_read_timeout. Что мне не понравилось, так это то, что этот тайм-аут сбрасывался каждый раз, когда сервер что-либо отправлял (а не клиент).

Какой тайм-аут нужно установить для отключения клиента, если клиент ничего не отправляет в течение x секунд?

Большое спасибо заранее!

Я думаю, вам также следует проверить тайм-аут системного tcp,

Для Linux на базе.

/proc/sys/net/ipv4/tcp_keepalive_time
/proc/sys/net/ipv4/tcp_keepalive_intvl
/proc/sys/net/ipv4/tcp_keepalive_probes
/proc/sys/net/ipv4/tcp_retries2

Для Windows,

HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Services: \Tcpip \Parameters

TcpInitialRTT: Defines what the initial time-out settings are for new connections. This number in seconds is doubled each time it retransmits before timing a connection out. Defaults to 3.

TcpMaxConnectRetransmissions: Defines the number of retransmissions before timing a connection out. Defaults to 5.