windows运行正常但是linux下程序在浏览器控制台console报websocket is closed before the connection is established
原因:
连接socket时需要通过IP获取到对应主机的域名来进行连接,此过程会相当耗时。前端有一个超时时间,导致无法在规定时间内收到服务端消息而触发超时操作。
表现:
windows及linux下可不同时出现,与DNS解析的配置有关。浏览器console界面会打印大量websocket is closed 错误消息。可能伴随着刷新很慢之类的相关异常现象
解决方法:
1 在hosts文件中添加对应IP的反解析,如:示例IP IP ,其中IP为服务机器的内网地址,无效则自己通过堆栈在某个地方debug代码来确认
我是通过第一种办法解决的;
sudo vim /etc/hosts (通过hostnamectl获取机器名)
追加一行
内网IP 机器名全称 机器名(去掉.后缀)
实例:
192.168.0.11 AP-SHA-VM-P85.internal.sungard.corp AP-SHA-VM-P85
2 重写SocketWrapperBase类的getLocalName方法,直接返回其私有属性localAddr。此处不做赘述,存在多个类可用于重写代码,根据需要自己合理选择
3 修改DNS相关配置(可能还存在其他相关配置,个人没有找到方法1外的相关配置,故无法给出实际例子)
推荐:
卡顿的时候可以使用JDK自带工具进行分析
获取程序进程号
JPS
获取当前程序的堆栈
JSTACK PID > stack.log
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2018-07-03 java12小时制的时间转换为24小时制
2018-07-03 Java数据类型和MySql数据类型对应表
2018-07-03 mybatis动态SQL中的set标签的使用