zoukankan      html  css  js  c++  java
  • WebSocket频繁收到客户端断开、重连消息,nginx配置自动断开问题

    在我是项目开发中用到Socket收发客户端消息,发现在开发环境中,ws服务频繁收到客户端断开、重连问题,最后利用nginx代理websocket的时候,发现客户端和服务器握手成功后,如果在60s时间内没有数据交互,连接就会自动断开。

    如果需要保持长连接,可以采取来两种方式.

    1.nginx.conf 设置proxy_read_timeout时长。配置如下:

    server {
            listen 80;
            server_name carrefourzone.senguo.cc;
            #error_page 502 /static/502.html;
     
            location /static/ {
                root /home/chenming/Carrefour/carrefour.senguo.cc/source;
                expires 7d;
                }
     
            location /ws {
                proxy_pass_header Server;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Scheme $scheme;
                proxy_pass       http://127.0.0.1:9887;
                proxy_http_version  1.1;
                proxy_set_header    Upgrade    "websocket";
                proxy_set_header    Connection "Upgrade";
                proxy_read_timeout 600s; 
            }
        }

    这种方式只能维持在设置的时间短内长连接。

    2.客户端发心跳

    在客户端ws服务类中定时添加发送检测心跳消息即可(定时时长需小于nginx设置时长),代码如下:

    ws.publish({
       type:'ping' 
    })
  • 相关阅读:
    Linux常用几种shell
    opencv中snake的调用方法示例
    GIT 常用命令手册
    偏最小二乘法回归(Partial Least Squares Regression)
    镜头的参数指标
    Git详解Git分支
    tab选项卡,不带自动切换定时器
    setTimeout和setInterval
    tab选项卡,带自动播放
    动态添加,删除class样式
  • 原文地址:https://www.cnblogs.com/jlj9520/p/11504607.html
Copyright © 2011-2022 走看看