@OnWebSocketClose是否总是被调用?我得到了@onwebsocketerror,@onwebsocketclose没有被调用

@OnWebSocketClose是否总是被调用?我得到了@onwebsocketerror,@onwebsocketclose没有被调用,websocket,jetty,Websocket,Jetty,@onwebsocketclose是否总是被调用?我收到@onwebsocketerror,@onwebsocketclose没有收到呼叫 There might be some broken pipe connection . StackTrace : org.eclipse.jetty.io.EofException: null at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:283) ~[ap

@onwebsocketclose是否总是被调用?我收到@onwebsocketerror,@onwebsocketclose没有收到呼叫

 There might be some broken pipe connection .
 StackTrace :
org.eclipse.jetty.io.EofException: null
    at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:283) ~[application.jar:?]
    at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:422) ~[application.jar:?]
    at org.eclipse.jetty.io.WriteFlusher.completeWrite(WriteFlusher.java:378) ~[application.jar:?]
    at org.eclipse.jetty.io.ChannelEndPoint$3.run(ChannelEndPoint.java:132) ~[application.jar:?]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~[application.jar:?]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~[application.jar:?]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[application.jar:?]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) ~[application.jar:?]
    at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:367) ~[application.jar:?]
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:782) ~[application.jar:?]
    at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:918) ~[application.jar:?]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_111]
Caused by: java.io.IOException: Broken pipe
    at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[?:1.8.0_111]
    at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) ~[?:1.8.0_111]
    at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) ~[?:1.8.0_111]
    at sun.nio.ch.IOUtil.write(IOUtil.java:65) ~[?:1.8.0_111]
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)~[?:1.8.0_111]
    at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:261) ~[application.jar:?]

关闭方法用于WebSocket握手完成或异常完成

I/O错误、空闲超时、严重断开连接和其他错误都在错误方法上

onClose()
onError()
上的任何事件都表示会话结束

异常闭包(可丢弃的)在调用2个应用程序事件方法中的哪一个方法上是快速的

一些行为:

  • 我们尝试只通知
    onClose()
    一次
  • 我们尝试只通知
    onError()
    一次
  • 如果调用了
    onClose()
    ,则不会调用
    onError()
  • 如果调用了
    onError()
    ,则不会调用
    onClose()
  • 如果确定关闭来自异常,则:
  • 异常记录在调试级别
  • 调用应用程序
    onError()
    (如果尚未调用)
  • 关闭帧已排队(如果尚未发送或排队)
  • 关闭帧发送成功或失败时,连接断开。(在这种例外情况下,无需等待远程关闭帧)
握手过程中的失败是

  • 在WebSocket客户端上,连接将失败并出现异常(当尝试从连接获取会话对象时,这可能会被报告为失败)
  • 在WebSocket服务器上,连接将不会成功,不会创建WebSocket会话,不会创建端点,也不会调用
    onOpen()

如果握手未完成(如果管道破裂),则是否调用@onwebsocketclose?添加了更多详细信息