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' 
})

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM