0Pricing
WebSockets & Real-Time Systems with Spring · درس

إعداد STOMP مع Spring

أعدّوا وسيط STOMP وآليات معالجة الرسائل في Spring لتحقيق اتصال فعّال.

إعداد STOMP مع Spring درس مجاني في WebSockets & Real-Time Systems with Spring على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في WebSockets & Real-Time Systems with Spring، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة WebSockets & Real-Time Systems with Spring 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

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!

الأسئلة الشائعة

هل درس «إعداد STOMP مع Spring» مجاني؟

نعم — نص درس «إعداد STOMP مع Spring» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة WebSockets & Real-Time Systems with Spring، انتقل إلى CoddyKit PRO. تتضمن دورة WebSockets & Real-Time Systems with Spring 4 دروس في المجموع.

ماذا ستتعلم في «إعداد STOMP مع Spring»؟

أعدّوا وسيط STOMP وآليات معالجة الرسائل في Spring لتحقيق اتصال فعّال. تتمرن على WebSockets & Real-Time Systems with Spring مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ WebSockets & Real-Time Systems with Spring؟

لا تُشترط خبرة سابقة. WebSockets & Real-Time Systems with Spring على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «إعداد STOMP مع Spring»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس WebSockets & Real-Time Systems with Spring هذا؟

نعم. كل درس في WebSockets & Real-Time Systems with Spring يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. مقدمة إلى بروتوكول STOMP
  2. إعداد STOMP مع Spring
  3. إرسال رسائل STOMP واستقبالها
  4. تأمين نقاط STOMP باستخدام Spring Security
← العودة إلى WebSockets & Real-Time Systems with Spring