2013-04-08 4 views
1

У меня есть простой встроенный сервер веб-сервера 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 начнет немедленно срабатывать, когда дальний конец разъема исчезнет.

ответ

0

onClose() загорается, указывая на то, что локальная веб-карта изменила состояние на закрытое.

Это может быть результатом:

  • Надлежащий WebSocket близко рукопожатие было получено удаленной конечной точки (также известный как чистый близко)
  • Любое нарушение протокола (в разборе или генерации), который будет пытаться выдать чистое закрытие (код состояния 1002). Примечание: из-за характера этой ситуации это близко, возможно, не чистое рукопожатие.
  • Тайм-аут соединения, приводящий к ненормальному (нечистому) закрытию. (код состояния 1006)
  • Любое чтение исключений ввода-вывода в сокете, что приводит к ненормальному (нечистому) закрытию. (код состояния 1006)
  • Любое исключение записи ввода-вывода в сокете, что приводит к ненормальному (нечистому) закрытию. (код состояния 1006)
+0

Thanks Joakim! Это определенно мое понимание того, когда onClose должен срабатывать. Но, к сожалению, не то, что я видел. Я недоумевал, было ли это в локальной сети на моей машине Mint, но я не преследовал этого. С тех пор я перешел на использование атмосферы, которая, похоже, работает нормально. – Theo

+0

Вы правы. Было несколько близких ошибок. [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), пожалуйста, попробуйте эту версию. –

+0

Как подключиться к методу OnClose? – Alireza

Смежные вопросы