我正在使用基于JAVA的websocket,但是我收到了一个我不理解的错误。
当服务器获得RuntimeException
或NullPointerException
等时,会调用onError
方法。
之后(完成onError方法),再次调用onError
方法。第二次之后,EOFException
连续发生。
您是否知道在EOFException
方法之后onError
发生了什么?
这是我的错误日志:
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)
感谢。
答案 0 :(得分:0)
我遇到了同样的问题,如果您使用ngingx重定向websocket请求,则必须增加proxy_read_timeout值,否则连接将在60秒后关闭(默认情况下)
答案 1 :(得分:0)
通常在客户端与服务器的连接断开时发生。 发生这种情况的原因可能多种多样,通常是介于两者之间的任何负载平衡器或tomcat设置都设置了超时,但也可能是客户端以及客户端与服务器之间的任何网络中断。
别忘了在OnError方法中处理该异常,通常您要在此关闭会话。