У меня есть простой встроенный сервер веб-сервера Jetty 9. У меня есть метод, как это в моем аннотированный реализации WebSocket:Когда OnWebSocketClose запускается в Jetty 9
@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)
}
У меня есть тест Спока, который подключается к серверу с помощью асинхронной-HTTP-клиент. Я получаю успешное соединение и могу отправлять сообщения туда и обратно.
Однако onClose() никогда не вызывается (когда я вызываю asysc-http-client's websocket.close() или client.close() или даже когда тестовый JVM умирает).
Я ожидал, что onClose начнет немедленно срабатывать, когда дальний конец разъема исчезнет.
Thanks Joakim! Это определенно мое понимание того, когда onClose должен срабатывать. Но, к сожалению, не то, что я видел. Я недоумевал, было ли это в локальной сети на моей машине Mint, но я не преследовал этого. С тех пор я перешел на использование атмосферы, которая, похоже, работает нормально. – Theo
Вы правы. Было несколько близких ошибок. [406449] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=406449) и [404991] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=404911), что были недавно [исправлены и доставлены в Jetty 9.0.3.v20130506] (http://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00049.html), пожалуйста, попробуйте эту версию. –
Как подключиться к методу OnClose? – Alireza