【问题标题】:java websocket EOFException occurjava websocket EOFException 发生
【发布时间】:2020-11-23 17:11:35
【问题描述】:

我正在使用 Java websocket,但我收到了一个我不理解的错误。

当服务器获得RuntimeExceptionNullPointerException 等时,将调用onError 方法。

之后(完成onError方法),再次调用onError方法。第二次之后,EOFException 连续出现。

你知道为什么EOFExceptiononError 方法之后发生吗?

这是我的错误日志:

java.io.EOFException
    at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1267)
    at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.isReadyForRead(NioEndpoint.java:1176)
    at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:58)
    at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148)
    at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:788)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1485)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

【问题讨论】:

  • 因为对端已经关闭了连接,几乎可以肯定是因为之前的错误,这是你应该调查的,而不是这个。

标签: java exception websocket eofexception


【解决方案1】:

我遇到了和你一样的问题。如果你使用 NGINGX 来重定向 websocket 请求,你必须增加proxy_read_timeout 的值。否则,连接将在 60 秒后关闭(默认情况下)。

【讨论】:

    【解决方案2】:

    这通常发生在客户端与服务器的连接断开时。 发生这种情况的原因有很多,通常是介于两者之间的任何负载均衡器或 tomcat 设置上设置的超时,但也可能是客户端以及客户端和服务器之间的任何网络中断。

    不要忘记在 OnError 方法中处理异常,通常您希望在那里关闭会话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      相关资源
      最近更新 更多