【问题标题】:Spring websocket connection closes on network disconnectSpring websocket连接在网络断开时关闭
【发布时间】:2019-07-07 15:15:38
【问题描述】:

我在服务器端使用 Spring WebSocket,在客户端使用 ng-websocket。所以我使用这个WebSocket从客户端发送一个ping,服务器用pong响应。除非我断开网络,否则一切正常。所以我现在面临的问题是,特别是在 Windows 机器上。因此,当网络断开连接时,websocket 不要重新连接并且连接会关闭。但是当我在 Linux 机器上做同样的事情时,它会重新连接并且工作正常,但在 Windows 上,10 秒后它会断开连接,并且我在客户端关闭了 Web 套接字。所以我需要知道 Windows 上的 WebSocket 超时是否需要任何配置。
提前致谢。

【问题讨论】:

  • 一些操作系统会在网络断开连接时取消所有连接状态,以帮助应用程序检测断开连接并释放资源。如果没有此功能,您在技术上可以继续写入套接字,直到缓冲区填满。我猜您使用的是 Windows 桌面而不是 Windows Server。
  • 是的,我使用的是 windows 桌面而不是 windows 服务器,我应该为 windows 寻找一些配置,以便它不会将其状态更改为关闭。我检查了 Linux 和 Windows 上的 WebSocket 状态,它显示 Linux 的打开(1)但 Windows 的关闭(3)。 WebSocket 状态来自-developer.mozilla.org/en-US/docs/Web/API/WebSocket/readyState
  • Linux 最终会关闭套接字。最值得注意的是,当 Windows 返回一个 RST 数据包时,说明它在 Windows 上已关闭。我不得不花一整天的时间安装 Windows Server,但根据我的历史,Win Server 和 Win Desktop 的行为可能非常不同。您需要做的就是关闭连接并在您的 ping-pong 超时时打开一个新连接。

标签: java angularjs spring multithreading websocket


【解决方案1】:

检查下面的链接,你应该编写逻辑来定期检查并连接。

https://github.com/websockets/ws/wiki/Websocket-client-implementation-for-auto-reconnect

希望对你有所帮助

【讨论】:

  • 感谢您的帮助,它提供了有关 websocket 重新连接的宝贵信息,但我想知道为什么 windows websocket 与 linux 机器相比会立即关闭。
猜你喜欢
  • 1970-01-01
  • 2020-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
  • 2019-06-18
相关资源
最近更新 更多