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可以实现