WebSocket踩坑記錄

1、項目部署到遠程服務器,使用https協議,websocket使用wss://前綴連接,報400

解決方法:配置nginx,允許websocket訪問

location / {
    index  index.html index.htm;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass   http://127.0.0.1:8382/;
    #注意這裏一定要加下面這兩行,否則問題還是沒解決
    proxy_set_header Upgrade $http_upgrade; # allow websockets
    proxy_set_header Connection "upgrade";   
}
location /socketServer {
    proxy_pass http://127.0.0.1:8382/platform/socketServer;
    proxy_set_header Host $host; # pass the host header
    proxy_set_header Upgrade $http_upgrade; # allow websockets
    proxy_set_header Connection "upgrade";            
    proxy_set_header X-Real-IP $remote_addr; # Preserve client IP
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_http_version 1.1;
}

2、聊天會自動斷開連接

解決方法:心跳包解決,實現心跳要雙向,前端發一個數據給服務器,服務器也要返回一個數據給前端,不然nginx轉發代理的時候,認爲客服端還連着,如果一直沒有接收到服務端的數據,會認爲服務端的連接已失效,然後就會斷開。

我們項目實現方式是前端發送“ping”給服務器,服務器收到並返回“pong”字符串。

【注意】心跳要每隔一段時間發送,前端的setTimeOut可以實現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章