java - Springboot Websocket 数据包在浏览器之前发送但丢弃。解决方法?
问题描述
我有一个 Spring Boot 应用程序向客户端(SockJS、Angular)发送定期更新以显示内容。但是,Spring Boot根据日志发送了一些数据包,但在浏览器端从未收到。丢弃发生在与服务器的直接连接上,因此网络上丢失数据包到客户端很可能不是根本原因。
该应用程序位于代理(lighthttpd)之后,我目前不知道数据包是在代理之前还是在代理中丢弃。我怀疑代理有问题,但我对此没有真正的确认。
我们依赖于服务器系统设计,所以到目前为止我的选择:
- 希望服务器更新能够修复代理,如果这是根本原因
- 找到一种方法来调试数据包被丢弃的位置并将责任转移给服务器设计人员,或者指出有问题的 COTS
- 实施解决方法以使其正常工作
我目前正在挖掘选项 3,但我对 Spring Boot 的了解非常少。当前代码使用 SimpMessagingTemplate.convertAndSend(destination, payload) 将序列化数据发送到客户端。我首先在寻找一种方法来从客户端确认已收到数据包,如果一段时间后未收到 ACK,则再次发送。这种特性在 Spring Boot 中是否存在开箱即用?你能想到另一种解决方法吗?
一些精度:
- 1 个客户端/服务器,一直。客户端是一个简单的接口,用于与通过 USB(USB 上的以太网)连接的设备进行交互
- 目前该设备使用 Java 7 作为 Spring Boot 1.3.0 的后端,应该很快就会更新到 Java 8。我不知道 Spring Boot 的更新是否可以解决这个问题。
谢谢 :)
解决方案
推荐阅读
- javascript - 找不到该类的标签
- hyperledger - 无法在 ubuntu 20.04 中安装 indy-sdk
- java - 使用 jcraft JSch 在 Java 中进行 SSH 密码身份验证失败并显示“Auth fail”,但命令行“ssh”有效
- html - 如何实现3行的DIV,顶行是固定大小的内容,中间行是可滚动的div,底行是状态栏
- ag-grid - 在 ag-grid 中为 Group 传递自定义标题渲染器
- python - 如何在 Windows 中通过“SYSTEM”用户执行 python subprocess.Popen()
- firebase - Firebase RTDB 在关键字列表中搜索关键字
- xcode - SwiftUI:构建 NavigationBar 时出现永久诊断错误
- javascript - 无法读取 null JS 的属性“选项”
- javascript - 对 Stripe 的 API 请求失败(错误:不是有效的 URL)