GraphQL APIs with Spring Boot · Leçon

Intégrer WebSockets à Spring

Configurez la prise en charge de WebSocket dans votre application Spring Boot afin d'activer des connexions persistantes entre clients et serveur pour les abonnements.

Leçon 3 sur 411 étapes

Intégrer WebSockets à Spring est une leçon GraphQL APIs with Spring Boot gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage GraphQL APIs with Spring Boot, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours GraphQL APIs with Spring Boot comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

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 @MessageMapping in 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 @EnableWebSocketMessageBroker and WebSocketMessageBrokerConfigurer.
  • We configured STOMP endpoints (e.g., /ws-connect with SockJS).
  • We set up a message broker with prefixes like /topic for subscriptions and /app for app-specific messages.

This setup is the foundation for delivering real-time GraphQL Subscriptions!

Gratuit pour commencer

Apprends GraphQL APIs with Spring Boot avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
12
Leçons
48

Questions Fréquemment Posées

La leçon « Intégrer WebSockets à Spring » est-elle gratuite ?

Oui — le texte complet de « Intégrer WebSockets à Spring » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours GraphQL APIs with Spring Boot, passe à CoddyKit PRO. Le cours GraphQL APIs with Spring Boot comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Intégrer WebSockets à Spring » ?

Configurez la prise en charge de WebSocket dans votre application Spring Boot afin d'activer des connexions persistantes entre clients et serveur pour les abonnements. Tu pratiques GraphQL APIs with Spring Boot avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer GraphQL APIs with Spring Boot ?

Aucune expérience préalable n'est requise. GraphQL APIs with Spring Boot sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Intégrer WebSockets à Spring » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon GraphQL APIs with Spring Boot ?

Oui. Chaque leçon GraphQL APIs with Spring Boot inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Comprendre les abonnements GraphQL
  2. Implémenter les mises à jour en temps réel
  3. Intégrer WebSockets à Spring
  4. Filtrage et montée en charge des abonnements
← Retour à GraphQL APIs with Spring Boot