gpt4 book ai didi

spring-boot - Spring websocket EOFException

转载 作者:行者123 更新时间:2023-12-03 16:14:54 69 4
gpt4 key购买 nike

我的项目是使用spring-boot web socket和嵌入式tomcat来实现聊天服务器。一切正常,但有时我收到 EOFException,然后客户端无法向聊天服务器发送消息,直到我重新启动 tomcat,然后一切正常。我不知道什么时候会发生 EOFException。请帮助我

[TRACE] 2017-10-23 06:17:10.707 [http-nio-7755-exec-4] NativeWebSocketSession - Sending TextMessage payload=[{"result":..], byteCount=164, last=true], StandardWebSocketSession[id=42b, uri=/chat] [DEBUG] 2017-10-23 06:17:29.670 [http-nio-7755-exec-8] LoggingWebSocketHandlerDecorator - Transport error in StandardWebSocketSession[id=42b, uri=/chat] java.io.EOFException: null at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1242) ~[tomcat-embed-core-8.5.16.jar!/:8.5.16] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1182) ~[tomcat-embed-core-8.5.16.jar!/:8.5.16] at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:72) ~[tomcat-embed-websocket-8.5.16.jar!/:8.5.16] at org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:171) ~[tomcat-embed-websocket-8.5.16.jar!/:8.5.16] at org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:151) ~[tomcat-embed-websocket-8.5.16.jar!/:8.5.16] at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148) [tomcat-embed-websocket-8.5.16.jar!/:8.5.16] at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54) [tomcat-embed-core-8.5.16.jar!/:8.5.16] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53) [tomcat-embed-core-8.5.16.jar!/:8.5.16] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-8.5.16.jar!/:8.5.16] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455) [tomcat-embed-core-8.5.16.jar!/:8.5.16] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.16.jar!/:8.5.16] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_131] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.16.jar!/:8.5.16] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131] [DEBUG] 2017-10-23 06:17:29.671 [http-nio-7755-exec-8] LoggingWebSocketHandlerDecorator - StandardWebSocketSession[id=42b, uri=/chat] closed with CloseStatus[code=1006, reason=null]

最佳答案

是的,我解决了。在客户端或服务器被中断或停止后没有调用关闭套接字方法(可能会丢失互联网,或使用套接字时关闭笔记本电脑或移动设备)后,将发生此异常。所以如果我们想解决这个问题,我们必须实现 ping/pong 机制,间隔后如果我们不能从客户端得到 pong 响应,我们将关闭这个套接字。另一种方式,我们可以捕获这个异常,然后我们将关闭旧的套接字。

谢谢,
安迪

关于spring-boot - Spring websocket EOFException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46888759/

69 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com