WebSocket频繁收到客户端断开、重连消息,nginx配置自动断开问题

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

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

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

server {
        listen ;
        server_name carrefourzone.senguo.cc;
        #error_page /static/502.html;
 
 
        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://.0.0.1:9887;
            proxy_http_version  .1;
            proxy_set_header    Upgrade    "websocket";
            proxy_set_header    Connection "Upgrade";
            proxy_read_timeout s; 
        }
    }

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

2.客户端发心跳

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

ws.publish({
   type:'ping' 
})
正文到此结束
评论插件初始化中...
Loading...