我有一个简单的嵌入式 Jetty 9 websocket 服务器。我在带注释的 websocket 实现中有这样的方法:
@OnWebSocketClose
void onClose(int statusCode, String reason) {
logger.info "Closed connection [${this}]"
connectionManager.remove(this)
Event closeEvent = commsEventFactory.buildCloseEvent(this, statusCode, reason)
eventReceiver.postEvent(closeEvent)
}
我有一个使用 async-http-client 连接到服务器的 spock 测试。我获得了成功的连接,并且可以来回发送消息。
但是,永远不会调用 onClose()(当我调用 async-http-client 的 websocket.close() 或 client.close() 时,甚至当测试 JVM 死机时)。
当套接字的远端消失时,我预计 onClose 会立即触发。