как реализовать пинг-понг в java Spring Websocket - PullRequest
0 голосов
/ 06 сентября 2018

Согласно документации здесь https://tools.ietf.org/html/rfc6455#page-37, websocket должен ответить на запрос ping с pong.

Я реализовал spring boot websocket для обработки websocket подключений от клиентов.

У меня реализован клиент websocket, который периодически отправляет ping frames.

Я нашел здесь https://stackoverflow.com/a/24438328, что я не могу обработать сообщения ping в Java.

У меня есть вопросы по этому поводу -

  1. Должен ли я обрабатывать эти ping запросы в java spring-boot websocket?
  2. если да, как я могу реализовать это в приложении весенней загрузки и ответить на запрос ping с помощью pong?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Должен ли я обрабатывать эти запросы ping в веб-сокете java spring-boot?

нет

Нет

Сервер автоматически ответит понгом.

Для Tomcat см.

https://github.com/apache/tomcat85/blob/b21d02042c408053a1944b27c3196ec9be3db381/java/org/apache/tomcat/websocket/WsFrameBase.java#L348

https://github.com/apache/tomcat85/blob/b21d02042c408053a1944b27c3196ec9be3db381/java/org/apache/tomcat/websocket/WsFrameBase.java#L41-L42

Для причала

https://github.com/eclipse/jetty.project/blob/b0f34fec3f4156c6fb250132fe95a895e07fb5ae/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/AbstractEventDriver.java#L125-L143

Пинг не отображается в обработчике пружинной веб-розетки (приемная часть)

С помощью пристани можно получить уведомление о пинге (см. org.eclipse.jetty.websocket.api.WebSocketPingPongListener)

Но он не используется пружинной паутиной.

0 голосов
/ 06 сентября 2018

Расширьте класс TextWebSocketHandler и напишите свою логику в методе handleTextMessage. Если вы ищете более общий подход, загляните в интерфейс WebSocketHandler. Но, как предположил Антониосс, пинг-понг уже реализован на уровне протокола для проверки, живо ли соединение.

...