不支持Atmosphere.js 501 Websocket协议

时间:2015-06-04 11:48:01

标签: jetty atmosphere

在Jetty上使用Python websocket-client-0.20.0客户端运行Atmosphere 2.2.0,有时虽然很少,但我们的日志会出现以下情况:

12:18:01.105 WARN  org.atmosphere.websocket.WebSocket: Unable to write 501 Websocket protocol not supported
12:18:01.106 WARN  o.a.w.protocol.SimpleHttpProtocol: Status code higher or equal than 400. Unable to deliver the websocket messages to installed component. Status 501 Message Websocket protocol not supported

这种垃圾邮件发送速度非常快,间隔时间约为5毫秒,如果在生产中发生这种情况,除了关闭系统之外别无他法。所以我们真的需要避免这种情况。

这可能是我们客户的一个问题,但我想知道的是,如果有办法在服务器后端识别这些类型的错误并且只是关闭连接,如果我们无法提出修复根本原因?

...编辑,大约六个月后:这个问题似乎来自早期的Jetty例外:

11:05:54.363 ERROR o.a.container.Jetty9WebSocketHandler:{} org.eclipse.jetty.websocket.api.WebSocketTimeoutException:在org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onReadTimeout上读取超时(AbstractWebSocketConnection.java:521)[devi CE-交互服务1.0.jar:NA] at org.eclipse.jetty.io.AbstractConnection.onFillInterestedFailed(AbstractConnection.java:258)[device-interaction-service-1.0 的.jar:NA] at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillInterestedFailed(AbstractWebSocketConnection.java:4 97)[device-interaction-service-1.0.jar:na] at org.eclipse.jetty.io.AbstractConnection $ ReadCallback $ 1.run(AbstractConnection.java:420)[device-interaction-service-1.0.jar :NA] 在org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)[device-interaction-service-1.0.jar:na] 在org.eclipse.jetty.util.thread.QueuedThreadPool $ 3.run(QueuedThreadPool.java:532)[device-interaction-service-1.0.jar:na] 在java.lang.Thread.run(Thread.java:745)[na:1.8.0_51] 11:05:54.365 DEBUG o.a.w.DefaultWebSocketProcessor:无法正确完成2d48f7ce-6150-42c2-b815-93acf94bdb93 11:05:55.156 WARN org.atmosphere.websocket.WebSocket:无法编写501 Websocket协议不受支持 11:05:55.157 WARN o.a.w.protocol.SimpleHttpProtocol:状态代码高于或等于400.无法将websocket消息传递给已安装的组件。状态501不支持消息Websocket协议 11:05:55.201 WARN org.atmosphere.websocket.WebSocket:无法编写501 Websocket协议不支持 11:05:55.202 WARN o.a.w.protocol.SimpleHttpProtocol:状态代码高于或等于400.无法将websocket消息传递给已安装的组件。状态501不支持消息Websocket协议 11:05:55.203 WARN org.atmosphere.websocket.WebSocket:无法编写501 Websocket协议不受支持 ...

在我看来,连接仍处于挂起状态,并且我的@ManagedService上没有调用@Disconnect方法。

我想知道如何拦截这个并关闭连接,迫使客户重新连接。

1 个答案:

答案 0 :(得分:0)

编写您自己的WebSocketProtocol或扩展SimpleHttpProtocol#onError https://github.com/Atmosphere/atmosphere/wiki/Writing-WebSocket-Sub-Protocol