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)

相关推荐
KKKlucifer2 小时前
加密通信 + 行为分析:运营商行业安全防御体系重构
网络·安全·重构
achene_ql5 小时前
select、poll、epoll 与 Reactor 模式
linux·服务器·网络·c++
黎相思5 小时前
应用层自定义协议与序列化
运维·服务器·网络
邪恶的贝利亚6 小时前
实现p2p的webrtc-srs版本
网络协议·webrtc·p2p
Lightning-py7 小时前
Linux命令cat /proc/net/snmp查看网络协议层面统计信息
网络·网络协议·tcp/ip
2501_915106327 小时前
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
websocket·网络协议·tcp/ip·http·网络安全·https·udp
wo3258661457 小时前
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
开发语言·网络·php
光路科技8 小时前
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
服务器·网络·重构
云盾安全防护10 小时前
CC攻击与WAF的对抗战
网络·安全·ddos
还是鼠鼠10 小时前
HTTP 请求协议简单介绍
java·开发语言·网络·网络协议·http