Java WebSocket出现EOFException异常

4
我正在使用Java WebSocket,但是我遇到了一个我不理解的错误。
当服务器收到RuntimeExceptionNullPointerException等异常时,会调用onError方法。
onError方法执行完后,onError方法再次被调用。第二次之后,EOFException连续发生。
你有任何想法为什么onError方法后会发生EOFException吗?
以下是我的错误日志:
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)

因为对等方已关闭连接,几乎可以肯定是由于先前的错误,这就是您应该调查的问题,而不是这个问题。 - user207421
2个回答

5

我遇到了和你一样的问题。如果你使用NGINX来重定向websocket请求,你需要增加proxy_read_timeout的值。否则,默认情况下60秒后连接会被关闭。


1
这通常发生在客户端与服务器的连接断开时。这可能由于各种原因导致,通常是负载均衡器或Tomcat设置中设置的超时,但也可能是客户端和客户端与服务器之间的任何网络中断。
不要忘记在OnError方法中处理异常,通常您希望在那里关闭会话。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接