我有 ServerEndpoint 类:
@ServerEndpoint(value = "/websocket", configurator = ServletAwareConfig.class)
public class WebsocketEndpoint {
@OnOpen
public void onOpen(Session session) {
System.out.println("OnOpen");
}
@OnClose
public void onClose(Session session) {
System.out.println("OnClose");
}
@OnMessage
public void onMessage(String message, Session session) {
System.out.println("OnMessage");
}
@OnError
public void onError(Throwable t) throws Throwable {
System.out.println("OnError");
}
}
当我刷新页面时,onError 被调用并且异常 t 包含下一个描述: java.util.concurrent.ExecutionException: java.net.SocketException: 断管
可以是什么原因?
最佳答案
当我使用 Chrome 或 Chromium 打开页面时遇到相同的异常。 (当我使用 Firefox 时,它永远不会发生)。我不确定您是否也在使用 Chrome。我想这是因为 V8 引擎。
我的解决方案是在离开页面之前关闭网络套接字:
window.addEventListener ("beforeunload", function(){ socket.close(); });
但是当我使用 Tyrus 时,我没有看到任何这样的异常。作为我的网络套接字服务器。希望有人能说明这个问题的直接原因。谢谢!
关于java - Tomcat JSR 356 websocket 刷新页面时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23984752/