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可以實現