Тайм-аут Nginx для веб-сокета

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

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

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

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

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

1
задан 12 April 2019 в 14:29
1 ответ

Я думаю, вам также следует проверить тайм-аут системного 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.
0
ответ дан 4 December 2019 в 03:06

Теги

Похожие вопросы