@deshaun_cormier
Для прослушивания событий с веб-сокета в Java можно использовать библиотеку "javax.websocket", которая входит в стандартное API Java EE.
Вот пример Java-кода для создания клиента веб-сокета и прослушивания событий:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import javax.websocket.ClientEndpoint; import javax.websocket.CloseReason; import javax.websocket.OnClose; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.WebSocketContainer; @ClientEndpoint public class WebSocketClient { @OnOpen public void onOpen(Session session) { System.out.println("Соединение установлено: " + session.getId()); } @OnMessage public void onMessage(String message, Session session) { System.out.println("Получено сообщение: " + message); } @OnClose public void onClose(Session session, CloseReason closeReason) { System.out.println("Соединение закрыто: " + closeReason.getReasonPhrase()); } @OnError public void onError(Throwable error) { System.out.println("Произошла ошибка: " + error.getMessage()); } public static void main(String[] args) { WebSocketContainer container = ContainerProvider.getWebSocketContainer(); String uri = "ws://localhost:8080/websocket"; // вставьте URI вашего веб-сокета try { Session session = container.connectToServer(WebSocketClient.class, URI.create(uri)); } catch (Exception e) { e.printStackTrace(); } } } |
Вы можете изменить методы onOpen
, onMessage
, onClose
, onError
по вашим потребностям. В методе onMessage
вы можете обрабатывать приходящие данные от сервера через веб-сокет.
Убедитесь, что в вашем проекте присутствует зависимость на javax.websocket API, если нет, вы можете добавить следующую зависимость в ваш файл pom.xml:
1 2 3 4 5 6 7 |
<dependencies> <dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifactId> <version>1.1</version> </dependency> </dependencies> |
Или в build.gradle:
1 2 3 |
dependencies { implementation 'javax.websocket:javax.websocket-api:1.1' } |
Обратите внимание, что код выше предполагает, что у вас уже есть веб-сокет-сервер, на который вы хотите подключиться. Вы должны указать правильный URI для подключения в переменной uri
.
@deshaun_cormier
Также возможно использование сторонних библиотек для работы с веб-сокетами, например, библиотеку Tyrus, которая является реализацией стандарта JSR-356 (Java API for WebSocket). Для использования Tyrus вам потребуется добавить ее зависимость в ваш проект. Пример использования Tyrus для прослушивания событий с веб-сокета:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
import javax.websocket.ClientEndpoint; import javax.websocket.OnClose; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import org.glassfish.tyrus.client.ClientManager; @ClientEndpoint public class WebSocketClient { @OnOpen public void onOpen(Session session) { System.out.println("Соединение установлено: " + session.getId()); } @OnMessage public void onMessage(String message, Session session) { System.out.println("Получено сообщение: " + message); } @OnClose public void onClose(Session session) { System.out.println("Соединение закрыто"); } @OnError public void onError(Session session, Throwable t) { System.out.println("Произошла ошибка: " + t.getMessage()); } public static void main(String[] args) { ClientManager client = ClientManager.createClient(); try { client.connectToServer(WebSocketClient.class, "ws://localhost:8080/websocket"); } catch (Exception e) { e.printStackTrace(); } } } |
Для использования Tyrus вам также потребуется добавить зависимость в ваш проект. Пример для Maven:
1 2 3 4 5 |
<dependency> <groupId>org.glassfish.tyrus</groupId> <artifactId>tyrus-client</artifactId> <version>1.17.1</version> </dependency> |
Или для Gradle:
1
|
implementation 'org.glassfish.tyrus:tyrus-client:1.17.1' |
Выбор использования стандартной библиотеки javax.websocket
или библиотеки Tyrus зависит от ваших предпочтений и требований проекта.