Изучение обмена сообщениями STOMP с помощью Spring: методы и примеры кода

Термин «STOMP» не имеет полной формы в английском языке. Однако в контексте веб-разработки STOMP означает простой (или потоковый) протокол обмена текстовыми сообщениями. Это легкий протокол обмена сообщениями, который часто используется для связи в реальном времени между клиентами и серверами.

В этой статье блога мы рассмотрим различные методы и примеры кода, связанные с STOMP в Spring Framework, популярной платформе Java для создания приложений корпоративного уровня.

  1. Настройка сервера STOMP с помощью Spring:
    Чтобы использовать STOMP в приложении Spring, вам необходимо настроить сервер STOMP. Одним из популярных вариантов является использование поддержки WebSocket, предоставляемой Spring. Вот пример настройки сервера STOMP с помощью Spring:

    @Configuration
    @EnableWebSocketMessageBroker
    public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
       @Override
       public void configureMessageBroker(MessageBrokerRegistry config) {
           config.enableSimpleBroker("/topic");
           config.setApplicationDestinationPrefixes("/app");
       }
       @Override
       public void registerStompEndpoints(StompEndpointRegistry registry) {
           registry.addEndpoint("/ws").withSockJS();
       }
    }

    В приведенном выше коде мы включаем брокер сообщений WebSocket и определяем префикс назначения («/topic») для сообщений, отправляемых с сервера клиентам. Мы также указываем префикс назначения приложения («/app») для сообщений, отправляемых от клиентов на сервер. Кроме того, мы регистрируем конечную точку STOMP (“/ws”) для подключения клиентов.

  2. Создание контроллера STOMP:
    В Spring вы можете определить контроллер STOMP для обработки входящих сообщений STOMP. Вот пример:

    @Controller
    public class MessageController {
       @MessageMapping("/hello")
       @SendTo("/topic/greetings")
       public Greeting greeting(HelloMessage message) {
           return new Greeting("Hello, " + message.getName() + "!");
       }
    }

    В приведенном выше коде мы определяем контроллер STOMP, который прослушивает сообщения, отправленные в пункт назначения «/hello». При получении сообщения вызывается метод greeting, который создает объект Greetingи отправляет его в пункт назначения «/topic/greetings».

  3. Отправка сообщения STOMP от клиента:
    Клиенты могут использовать JavaScript или любой другой поддерживаемый язык для отправки сообщений STOMP на сервер. Вот пример использования JavaScript и библиотеки STOMP.js:

    var socket = new WebSocket('ws://localhost:8080/ws');
    var stompClient = Stomp.over(socket);
    stompClient.connect({}, function() {
       var message = { name: 'John' };
       stompClient.send('/app/hello', {}, JSON.stringify(message));
    });

    В приведенном выше коде мы устанавливаем соединение WebSocket с сервером STOMP и создаем клиент STOMP, используя библиотеку STOMP.js. После подключения к серверу мы отправляем сообщение STOMP в пункт назначения «/app/hello».

Это всего лишь несколько примеров работы с STOMP в Spring Framework. Доступно множество других функций и возможностей, таких как подписка на темы, обработка ошибок и отправка сообщений конкретным пользователям.