WebSockets & Real-Time Systems with Spring · Lezione

Configurazione di STOMP con Spring

Configuri il broker STOMP e i meccanismi di gestione dei messaggi di Spring per una comunicazione efficiente.

Lezione 2 di 411 passaggi

Configurazione di STOMP con Spring è una lezione WebSockets & Real-Time Systems with Spring gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento WebSockets & Real-Time Systems with Spring, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso WebSockets & Real-Time Systems with Spring include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

Spring & STOMP Configuration

Spring Boot makes building real-time applications with WebSockets and STOMP much easier. It provides powerful abstractions and auto-configuration to get you started quickly.

In this lesson, we'll learn how to set up Spring to handle STOMP messages. This involves configuring message brokers, defining endpoints, and establishing communication paths.

Activating STOMP with Spring

The first step is to enable Spring's WebSocket message broker capabilities. This is done with a single annotation: @EnableWebSocketMessageBroker.

  • This annotation configures a message broker behind the scenes.
  • It also sets up a Spring application context for handling STOMP messages.
  • You'll typically place this on a configuration class.

Customizing Your STOMP Setup

To customize how Spring handles WebSocket and STOMP messages, you'll implement the WebSocketMessageBrokerConfigurer interface.

This interface provides methods that allow you to:

  • Configure the message broker.
  • Register STOMP endpoints.
  • Add interceptors and customize message converters.

Setting Up the Message Broker

The message broker routes messages to their intended recipients. Spring provides a "simple" in-memory broker for basic needs.

You configure it in the configureMessageBroker method:

  • enableSimpleBroker(): Activates the in-memory broker.
  • Paths like /topic are for public, publish-subscribe messages.
  • Paths like /queue are for private, point-to-point messages.

Simple Broker Example

Here's how to set up the basic in-memory message broker with /topic and /queue destinations. This will allow clients to subscribe to public topics and send private messages.

package com.coddykit;

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.WebSocketMessageBrokerConfigurer;

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}

@Configuration
@EnableWebSocketMessageBroker
class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic", "/queue");
    }
    // Endpoints will be added later
}

Client-to-Server Paths

When a client sends a message to the server, it usually targets a specific server-side handler. We define a prefix for these messages using setApplicationDestinationPrefixes().

  • For example, if the prefix is /app, clients send messages to paths like /app/chat.sendMessage.
  • These messages are then routed to methods annotated with @MessageMapping on the server.

App Destination Prefix Example

Let's update our configuration to include an application destination prefix. This tells Spring which messages are intended for server-side methods.

package com.coddykit;

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.WebSocketMessageBrokerConfigurer;

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}

@Configuration
@EnableWebSocketMessageBroker
class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic", "/queue");
        // Messages from clients for the server will start with /app
        config.setApplicationDestinationPrefixes("/app");
    }
    // Endpoints will be added later
}

Defining WebSocket Connection Point

Clients need a specific HTTP endpoint to initiate the WebSocket handshake. This is where they first connect before STOMP messaging begins.

You define this endpoint using registerStompEndpoints():

  • addEndpoint("/ws"): Makes the endpoint available at http://localhost:8080/ws.
  • withSockJS(): Enables SockJS fallback options for browsers that don't fully support WebSockets.

Complete STOMP Configuration

Here's the complete configuration class, combining the message broker setup, application destination prefix, and the STOMP endpoint registration. This is the foundation for your Spring STOMP application.

package com.coddykit;

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 MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}

@Configuration
@EnableWebSocketMessageBroker
class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        // Messages for client subscriptions (server to client)
        config.enableSimpleBroker("/topic", "/queue");
        // Messages from clients to server-side handlers
        config.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        // The HTTP endpoint for WebSocket handshake
        registry.addEndpoint("/ws").withSockJS();
    }
}

Configuration Check

You've learned about different prefixes in Spring STOMP configuration. It's crucial to understand their roles.

Summary of Configuration

You've successfully learned how to configure Spring for STOMP messaging! Here's a quick recap:

  • @EnableWebSocketMessageBroker: Activates WebSocket and STOMP support.
  • WebSocketMessageBrokerConfigurer: Interface for customizing the setup.
  • configureMessageBroker(): Sets up the message broker (e.g., enableSimpleBroker("/topic", "/queue")) and application destination prefixes (e.g., setApplicationDestinationPrefixes("/app")).
  • registerStompEndpoints(): Defines the WebSocket handshake URL (e.g., addEndpoint("/ws").withSockJS()).

These steps lay the foundation for building powerful real-time features with Spring and STOMP!

Gratis per iniziare

Impara WebSockets & Real-Time Systems with Spring con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
12
Lezioni
48

Domande Frequenti

La lezione «Configurazione di STOMP con Spring» è gratuita?

Sì — il testo completo di «Configurazione di STOMP con Spring» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso WebSockets & Real-Time Systems with Spring, passa a CoddyKit PRO. Il corso WebSockets & Real-Time Systems with Spring include 4 lezioni in totale.

Cosa imparerò in «Configurazione di STOMP con Spring»?

Configuri il broker STOMP e i meccanismi di gestione dei messaggi di Spring per una comunicazione efficiente. Eserciti WebSockets & Real-Time Systems with Spring con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare WebSockets & Real-Time Systems with Spring?

Non è richiesta alcuna esperienza precedente. WebSockets & Real-Time Systems with Spring su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Configurazione di STOMP con Spring»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione WebSockets & Real-Time Systems with Spring?

Sì. Ogni lezione WebSockets & Real-Time Systems with Spring include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Introduzione al protocollo STOMP
  2. Configurazione di STOMP con Spring
  3. Invio e ricezione di messaggi STOMP
  4. Proteggere gli endpoint STOMP con Spring Security
← Torna a WebSockets & Real-Time Systems with Spring