Интеграция WebSockets со Spring
Настройте поддержку WebSocket в приложении Spring Boot, чтобы включить постоянные соединения между клиентом и сервером для подписок.
«Интеграция WebSockets со Spring» — бесплатный урок GraphQL APIs with Spring Boot на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения GraphQL APIs with Spring Boot, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс GraphQL APIs with Spring Boot содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
WebSockets for Real-time Data
Welcome! In this lesson, we'll integrate WebSockets with Spring Boot. This is crucial for enabling real-time features like GraphQL Subscriptions.
WebSockets provide a persistent, two-way communication channel between a client and a server over a single, long-lived TCP connection.
Why WebSockets for Subscriptions?
Unlike traditional HTTP requests (which are short-lived), GraphQL Subscriptions require a continuous connection to push data updates to clients as they happen.
WebSockets are the perfect fit because they maintain an open connection, allowing the server to send data to the client at any time without a new request.
Adding the Dependency
First, we need to add the Spring Boot WebSocket starter dependency to our project. This brings in all the necessary libraries to enable WebSocket support.
For Gradle, add this to your build.gradle:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-websocket'
}Enabling WebSocket Message Broker
In Spring, we use annotations to enable specific functionalities. For WebSockets with a message broker, we use @EnableWebSocketMessageBroker.
This annotation enables a STOMP over WebSocket message broker, which is a powerful way to handle messaging.
Configuring WebSocket Endpoints
We need a configuration class that extends WebSocketMessageBrokerConfigurer. This class allows us to customize our WebSocket setup.
The registerStompEndpoints() method is used to define the URL endpoint clients will connect to for WebSocket communication.
Adding SockJS Fallback
When registering an endpoint, we often add .withSockJS(). SockJS is a JavaScript library that provides a WebSocket-like API.
It offers fallback options (like HTTP streaming or long polling) for browsers that don't fully support WebSockets or in environments with proxies that interfere.
Configuring the Message Broker
The configureMessageBroker() method sets up the message broker itself. This defines how messages are routed between clients and the application.
enableSimpleBroker("/topic"): Enables an in-memory message broker for destinations prefixed with/topic. Clients subscribe to these topics.setApplicationDestinationPrefixes("/app"): Defines prefixes for messages destined for methods annotated with@MessageMappingin our application.
Complete WebSocket Configuration
Here's a minimal Spring Boot application demonstrating the WebSocket configuration. Try running it to see Spring initialize the WebSocket server!
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
System.out.println("WebSocket server ready on port 8080!");
System.out.println("Connect at ws://localhost:8080/ws-connect");
}
@Configuration
@EnableWebSocketMessageBroker
static class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws-connect")
.withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
}
}Bridging to GraphQL Subscriptions
With this WebSocket infrastructure, our GraphQL subscription resolvers (from the previous lesson) can now publish events.
When a resolver publishes an event, Spring's message broker ensures that all clients subscribed to the relevant /topic are immediately notified via their open WebSocket connection.
Quick Check: WebSocket Config
Consider the following line from our WebSocket configuration:
config.enableSimpleBroker("/topic");What is the primary purpose of the /topic prefix in this context?
Recap: WebSockets in Spring
Great job! You've learned how to integrate WebSockets with Spring Boot to provide a robust real-time communication layer.
- We added the WebSocket starter dependency.
- We used
@EnableWebSocketMessageBrokerandWebSocketMessageBrokerConfigurer. - We configured STOMP endpoints (e.g.,
/ws-connectwith SockJS). - We set up a message broker with prefixes like
/topicfor subscriptions and/appfor app-specific messages.
This setup is the foundation for delivering real-time GraphQL Subscriptions!
Часто задаваемые вопросы
Урок «Интеграция WebSockets со Spring» бесплатный?
Да — полный текст урока «Интеграция WebSockets со Spring» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс GraphQL APIs with Spring Boot, подпишись на CoddyKit PRO. Курс GraphQL APIs with Spring Boot содержит 4 уроков всего.
Чему я научусь в уроке «Интеграция WebSockets со Spring»?
Настройте поддержку WebSocket в приложении Spring Boot, чтобы включить постоянные соединения между клиентом и сервером для подписок. Ты практикуешь GraphQL APIs with Spring Boot с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать GraphQL APIs with Spring Boot?
Предыдущий опыт не требуется. GraphQL APIs with Spring Boot на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Интеграция WebSockets со Spring»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке GraphQL APIs with Spring Boot?
Да. Каждый урок GraphQL APIs with Spring Boot включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Понимание подписок GraphQL
- Реализация обновлений в реальном времени
- Интеграция WebSockets со Spring
- Фильтрация и масштабирование подписок