Вопрос проверяет понимание того, зачем поверх низкоуровневого WebSocket нужен протокол STOMP и какие задачи он решает при построении обмена сообщениями в реальном времени.
WebSocket сам по себе предоставляет лишь низкоуровневый двунаправленный канал между клиентом и сервером. Он не описывает, как именно передавать сообщения, кому они адресованы и как подписываться на события. STOMP (Simple Text Oriented Messaging Protocol) решает эту проблему, добавляя поверх канала простой текстовый протокол обмена сообщениями с фреймами и заголовками.
Благодаря этому STOMP легко ложится на модель publish/subscribe: сервер (или брокер) хранит подписки и рассылает сообщения нужным клиентам. Это особенно удобно в Spring, где есть встроенная поддержка STOMP через @MessageMapping и SimpMessagingTemplate.
@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();
}
}
@Controller
public class ChatController {
@MessageMapping("/chat")
@SendTo("/topic/messages")
public String handle(String message) {
return message;
}
}На клиенте подписка выглядит так: stompClient.subscribe('/topic/messages', callback), а отправка — stompClient.send('/app/chat', {}, text). Такой подход избавляет от ручного парсинга и маршрутизации.
Итог: STOMP стоит применять, когда нужна готовая модель pub/sub и маршрутизация сообщений поверх WebSocket, а не собственный бинарный формат. Это ускоряет разработку и делает обмен предсказуемым.
Уровень
Рейтинг:
4
Сложность:
6
Навыки
JavaScript
Spring
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию