Tomcat JSR 356 websocket中的刷新页面发生异常

时间:2014-06-01 21:37:44

标签: java tomcat websocket jsr356

我有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:Broken pipe

可能是什么原因?

1 个答案:

答案 0 :(得分:2)

当我使用Chrome或Chromium打开页面时,我遇到了同样的异常。 (当我使用Firefox时,它永远不会发生)。我不确定你是否也在使用Chrome。我想这是因为V8发动机。

我的解决方案是在离开页面之前关闭Web套接字:

window.addEventListener ("beforeunload", function(){ socket.close(); });

但是当我使用Tyrus作为我的Web套接字服务器时,我没有看到任何这样的例外。希望有人能够证明这个问题的直接原因。谢谢!