当前位置: 首页 > news >正文

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

概述

当前springboot版本:2.7.4
使用依赖

<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)

在这里插入图片描述

http://www.lryc.cn/news/106525.html

相关文章:

  • 想写几个上位机,是选择学c#还是 c++ qt呢?
  • JavaScript 简单实现观察者模式和发布-订阅模式
  • java集成短信服务 测试版 qq邮箱简单思路
  • #P0994. [NOIP2004普及组] 花生采摘
  • Elasticsearch和Kibana的安装及验证
  • 细讲TCP三次握手四次挥手(一)
  • 【linux-zabbix】zabbix-agent启动报错:Daemon never wrote its PID file. Failing.
  • 【微信小程序】初始化 wxCharts,调用updateData动态更新数据
  • 【C语言初阶(19)】实用的 VS 调试技巧
  • 虚拟机之间配置免密登录
  • 【contenteditable属性将元素改为可编辑状态】
  • Android 第三方库CalendarView
  • 钉钉群消息推送
  • css clip-path 属性介绍
  • Python之pyinstaller打包exe填坑总结
  • Form Generator 表单JSON数据储存以及JSON回显表单
  • Python - OpenCV识别条形码、二维码(已封装,拿来即用)
  • Python如何快速实现爬取网页?
  • 怎么才能远程控制笔记本电脑?
  • 【3】C++实现多进程、多线程
  • Linux用户权限信息、chmod以及chown命令
  • 利用vscode--sftp,将本地项目/文件上传到远程服务器中详细教程
  • java List和数组相互转换的方法总结
  • 【音频分离】demucs V3的环境搭建及训练(window)
  • JAVA环境变量配置(windows)
  • 爬虫教程1_Xpath 入门教程
  • Python爬虫教程篇+图形化整理数据(数学建模可用)
  • 数字安全观察·数据安全分析方向
  • Kubernetes系列-配置存储 ConfigMap Secret
  • bacnet ddc控制器如何通过485口转发Modbus协议控制modbus执行设备