【转载请注明出处】:https://blog.csdn.net/huahao1989/article/details/107804286
一般情况下,前端页面连接WebSocket服务的时候都是通过Nginx等负载均衡,然后由Nginx去代理连接后端的socket服务。Nginx的配置类似如下:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
location / {
proxy_pass https://socket;
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
如果建立连接之后不做一些措施,那么可能会有各种各样的原因会导致socket断开,最好在socket断开时将错误打印出来。
ws.onclose = function (ev) {
console.log('socket 断开: ' + ev.code + ' ' + ev.reason + ' ' + ev.wasClean)
}
socket断开时,会触发CloseEvent
, CloseEvent会在连接关闭时发送给使用 WebSocket 的客户端,它在 WebSocket 对象的 onclose 事件监听器中使用。 CloseEvent有三个字段需要注意, 通过分析这三个字段,一般就可以找到断开原因:
CloseEvent.code
: code是错误码,是整数类型CloseEvent.reason
: reason是断开原因,是字符串CloseEvent.wasClean
: wasClean表示是否正常断开,是布尔值。一般异常断开时,该值为false
状态码 | 名称 | 描述</ |
---|