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

posted @   黄进广寒  阅读(2220)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.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标签的使用
点击右上角即可分享
微信分享提示