gpt4 book ai didi

websocket - 找出发生 Web Socket 断开连接的原因

转载 作者:行者123 更新时间:2023-12-04 13:40:42 39 4
gpt4 key购买 nike

我在我的应用程序中使用 Jetty Web 套接字,并将 Jetty 7 作为我们的服务器。

在我们的应用程序中,数据将每 1 秒通过 web Socket 持续流动,根据我们的应用程序设计,如果 Socket 空闲 4 分钟,则 Socket 将断开连接。

现在我们在我们的应用程序中遇到 Web Socket 断开连接,我无法找出 Web Socket 断开连接的原因,这是因为 Socket 空闲了 4 分钟还是网络级别发生了一些事情(我的意思是负载均衡器,防火墙 - ETC )

对于每个断开连接,在 Jetty 内部,原因代码为 1006 (chrome)

请让我知道如何找出断开连接的实际原因?

有什么方法可以监控网络套接字流量吗?

我曾尝试使用 Chrome 调试器工具 Websocket 选项卡来监控流量,但是一旦断开连接,我就不知道当时 Websocket 中存在哪些数据?

请分享您对如何处理这种情况的想法,即如何找出找出 WebSocket 的原因是什么?

最佳答案

Jetty 开发人员强烈建议在使用 WebSockets 时升级到 Jetty 9。
(披露,我是 Jetty 提交者)
Jetty 7 和 8 实现了 WebSocket Drafts 的早期版本,并且根据您的浏览器,您将获得 WebSocket 的截然不同的行为。
最终支持 websocket 的浏览器(Jetty 7 和 8 可以使用)

  • Safari 5.x(或更早版本)
  • Opera 12.x(或更早版本)
  • Opera Mini(所有版本)
  • Chrome 13.x(或更早版本)
  • Firefox 10.x(或更早版本)
  • IE 9.x(或更早版本)
  • Android 浏览器(任何版本)
  • 黑莓浏览器(10.x 之前的版本)
  • 任何现有的 Shockwave/Flash WebSocket 桥。

  • 从 Jetty 9 开始,对 WebSocket 草案版本的所有支持都已被放弃,而只支持使用已发布的 RFC-6455 规范版本。
    现在,到您的 1006 关闭代码问题。
    那是一个 local side only close status code , 由 Chrome 发起并报告。
    根据您的 Chrome 版本,错误 1006 的原因可能有十几个不同的原因。几乎所有这些都归结为连接或协议(protocol)问题。
    使用 Jetty 7 和 8,有许多不同的超时和空闲检查(一些在连接器,一些在端点层,一些在连接层,甚至一些在 HTTP 层,还有更多在 WebSocket 层)可以得到以您的方式并严厉地终止连接,而无需发生 WebSocket 关闭握手。
    这已在 Jetty 9 中解决。有 2 个超时,握手和空闲。
    如果问题与协议(protocol)有关,那么您可以看到错误代码 1006 异常/非干净终止(仅限本地端)或 1002 协议(protocol)违规。
    此时,您可以升级到具有更好协议(protocol)、超时、连接、关闭和错误通知的 Jetty 9。或者您可以打开服务器端 Jetty 7/8 上的所有调试,并希望您看到 StackTrace 指示服务器端问题的原因。

    关于websocket - 找出发生 Web Socket 断开连接的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16732317/

    39 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com