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

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

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

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

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

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

1 ответ

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

Для 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

Для окон на основе,

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.
Другие вопросы по тегам