Websocket 查找发生Web套接字断开连接的原因

Websocket 查找发生Web套接字断开连接的原因,websocket,jetty,Websocket,Jetty,我在应用程序中使用Jetty Web套接字,Jetty 7是我们的服务器 在我们的应用程序中,数据将每隔1秒通过web套接字连续流动,根据我们的应用程序设计,如果套接字空闲4分钟,那么套接字将断开连接 现在我们的应用程序中出现了web套接字断开连接的情况,我无法找到web套接字断开连接的原因,这是因为套接字空闲了4分钟还是在网络级别发生了什么事情(我指的是负载平衡器、防火墙等) 对于每次断开,码头内部的原因代码为1006(铬) 请让我知道如何才能找到发生断开连接的实际原因 有什么方法可以监视we

我在应用程序中使用Jetty Web套接字,Jetty 7是我们的服务器

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

现在我们的应用程序中出现了web套接字断开连接的情况,我无法找到web套接字断开连接的原因,这是因为套接字空闲了4分钟还是在网络级别发生了什么事情(我指的是负载平衡器、防火墙等)

对于每次断开,码头内部的原因代码为1006(铬)

请让我知道如何才能找到发生断开连接的实际原因

有什么方法可以监视web套接字流量吗

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


请分享您对如何处理这种情况的看法,即如何找出查找WebSocket的原因?

1006是异常终止。有时,您会收到一条消息“握手响应不完整”。您可以使用TCP Mon或Wireshark监视套接字通信量,并查看正在传输的头

如果服务器没有设置为在连接上接收大数据,我也看到了这一点。您将看到类似“连接关闭,状态=1006,原因=EOF”的内容。Jetty限制服务器可以接收的消息的大小。如果您尝试发送大于此大小的邮件,Jetty将关闭连接。您可以使用connection对象的setMaxBinaryMessageSize和setMaxTextMessageSize增加连接上的消息大小限制


希望这能有所帮助。

Jetty开发人员强烈建议在使用WebSocket时升级到Jetty 9。 (披露,我是码头提交人)

Jetty 7和8实现了WebSocket草稿的早期版本,并且根据您的浏览器,您将获得截然不同的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之前的版本)
  • 任何现有的冲击波/闪光网桥
从Jetty 9开始,所有对WebSocket草稿版本的支持都被放弃,只支持使用已发布的RFC-6455规范版本

现在,关于您的1006结束代码问题

这是一个,它起源于Chrome,并由Chrome报告。 根据您的Chrome版本,错误1006的原因可能有十几个不同的原因。几乎所有这些问题都归结为连接或协议问题

对于Jetty 7和8,有许多不同的超时和空闲检查(一些在连接器上,一些在端点层上,一些在连接层上,甚至一些在HTTP层上,还有更多在WebSocket层上),它们可能会妨碍您的工作,并在不发生WebSocket关闭握手的情况下终止连接

这已在码头9中解决。有两个超时,握手和空闲

如果问题与协议相关,则可以看到错误代码1006异常/非清洁终止(仅本地端),或1002协议冲突


此时,您可以升级到Jetty 9,使用更好的协议、超时、连接、关闭和错误通知。或者,您可以打开服务器端Jetty 7/8上的所有调试,并希望在服务器端看到指示问题原因的StackTrace。

1006是本地端关闭代码。它不能由任何端点在WebSocket关闭控制框中发送。当我试图从jetty-8客户端向jetty-9服务器发送大数据消息时,我一直在客户端和服务器端连接上看到1006。通过增加服务器上的最大消息大小修复了此问题。Jetty 9服务器将在该场景中以状态代码1009(消息太大)进行响应。这就是我最终能够弄清楚发生了什么的原因。(1009)我的问题是没有建立SSL工厂。