@EvgeniiR
https://github.com/EvgeniiR

Почему на VPS обрывается websocket соединение, если не происходит обмена данными в течение ~1 минуты?

Конфиг nginx:
spoiler
proxy_read_timeout 950s;
server {
        listen 80; 
        server_name 62.109.21.96;
        root  /home/user/ws-chat;

        index index.php;
        # add_header Access-Control-Allow-Origin *;


        location / {
                # add_header Access-Control-Allow-Origin *;
                try_files $uri $uri/ /index.php?$query_string;
        }

        location /ws/ {
                proxy_pass http://localhost:9502;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
        }

        location ~* \.php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

На локалке все работает нормально. С чем может быть связана проблема?

UPD: Спасибо за ответы. С пингом каждые 20 секунд работает хорошо.
На случай если у кого возникнет такая проблема с swoole_websocket https://github.com/swoole/swoole-src/issues/2019
  • Вопрос задан
  • 352 просмотра
Решения вопроса 1
SagePtr
@SagePtr
Еда - это святое
Библиотеки типа socket.io обходят эту проблему тем, что каждые N секунд (к примеру, полминуты) отправляют что-то вроде пинга (реализованного на обеих сторонах), чтобы заодно и проверить, живо ли соединение (а то некоторые провайдеры или глючные роутеры могут тоже закрывать TCP-соединения втихаря, если через них долго ничего не передавалось).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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