websocket服务端大报文发送连接自动断开分析

概述

当前springboot版本:2.7.4

使用依赖

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

现象概述:

客户端和服务端已经有心跳连接正常ping,pong.

服务端发送大报文给客户端时,当经过心跳间隔,chrome(客户端)中提示websocket连接已被关闭。

此时打开chromenetwork查看ws报文发送情况,发现服务端并没有推送报文过来。

这个时候就怀疑是服务端在某个异常情况下关闭了连接

排查经过

先查看websocket服务端的tomcat日志,并没有发现可疑的日志,只看到在调用sendMessage前的一个log.info日志。

那么此时就准备开始调试了,进入发送消息的地方,发现有个超时时间
org.apache.tomcat.websocket.WsRemoteEndpointImplBase#sendMessageBlock(java.nio.CharBuffer, boolean)

点进去后,看到默认是 20s + 当前时间戳

然后发送的时候比较当前发送的总时间是否已经超过20s,如果超过则直接关闭连接。

org.apache.tomcat.websocket.WsRemoteEndpointImplBase#sendMessageBlock(byte, java.nio.ByteBuffer, boolean, long)

相关推荐
技术小齐几秒前
网络运维学习笔记(DeepSeek优化版)002网工初级(HCIA-Datacom与CCNA-EI)子网划分与协议解析
运维·网络·学习
清水加冰1 小时前
【计算机网络】传输层协议(UDP && TCP)
网络协议·tcp/ip·计算机网络·udp
YancyYue3 小时前
HTTP实验(ENSP模拟器实现)
网络·网络协议·http
xianwu5433 小时前
反向代理模块kfj
开发语言·网络·数据库·c++·mysql
小冷爱学习!4 小时前
华为动态路由-OSPF-综合案例
服务器·网络·华为
小许不内卷5 小时前
TCPDF 任意文件读取漏洞:隐藏在 PDF 生成背后的危险
网络·安全
yuanbenshidiaos6 小时前
【僵尸进程】
linux·服务器·网络
猫猫的小茶馆6 小时前
【网络编程】UNIX 域套接字(Unix Domain Sockets, UDS)
linux·网络·网络协议·udp·unix·信息与通信
猴子技术宅6 小时前
wordpress禁止系统自带搜索功能增强被恶意搜索轰炸(google有效)
运维·网络·搜索引擎
yourkin6666 小时前
TCP重传机制
网络