Spring Boot の SimpMessagingTemplate とは何か、その原理、および使用方法

Spring Boot の SimpMessagingTemplate とは何か、その原理、および使用方法

SimpMessagingTemplate は、WebSocket クライアントにメッセージを送信するための Spring Framework のクラスです。Spring Bootアプリケーションでは、SimpMessagingTemplateを利用してWebSocket通信のメッセージ送信機能を実装できます。この記事では、SimpMessagingTemplateの原理と使い方を紹介します。

ここに画像の説明を挿入

SimpMessagingTemplateとは

SimpMessagingTemplate は、WebSocket クライアントにメッセージを送信するための Spring Framework のクラスです。Spring Bootアプリケーションでは、SimpMessagingTemplateを利用してWebSocket通信のメッセージ送信機能を実装できます。

SimpMessagingTemplate クラスは、WebSocket クライアントにメッセージを送信するためのさまざまなメソッドを提供し、テキスト メッセージ、バイナリ メッセージ、オブジェクト メッセージなどの複数のメッセージ タイプをサポートします。

原理

SimpMessagingTemplate の原理は、WebSocket メッセージ プロキシを通じて WebSocket クライアントにメッセージを送信することです。WebSocket メッセージ ブローカーを有効にすると、SimpMessagingTemplate クラスを使用して WebSocket クライアントにメッセージを送信できます。

SimpMessagingTemplate クラスの sendMessage メソッドは、WebSocket クライアントにメッセージを送信するために使用されます。このメソッドはメッセージを WebSocket メッセージ ブローカーに送信し、WebSocket メッセージ ブローカーはターゲットの WebSocket クライアントにメッセージを転送します。

Spring Boot では、SimpMessagingTemplate クラスのインスタンスを挿入することで、WebSocket クライアントにメッセージを送信できます。具体的なコードは次のとおりです。

@RestController
public class GreetingController {
    
    
    @Autowired
    private SimpMessagingTemplate messagingTemplate;

    @MessageMapping("/hello")
    public void greeting(HelloMessage message) throws Exception {
    
    
        Thread.sleep(1000); // simulated delay
        Greeting greeting = new Greeting("Hello, " + message.getName() + "!");
        messagingTemplate.convertAndSend("/topic/greetings", greeting);
    }
}

上記のコードでは、SimpMessagingTemplate クラスのインスタンス messagegingTemplate を GreetingController クラスに挿入しました。グリーティング メソッドでは、messagingTemplate.convertAndSend メソッドを通じて、グリーティング タイプのメッセージを「/topic/greetings」アドレスに送信します。

使い方

SimpMessagingTemplate クラスを使用して WebSocket クライアントにメッセージを送信する方法を示します。

ステップ 1: 依存関係を追加する

SimpMessagingTemplate を使用する前に、次の依存関係をプロジェクトに追加する必要があります。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

ステップ 2: WebSocket 構成クラスを定義する

プロジェクト内で WebSocket 構成クラスを定義して、WebSocket メッセージ ブローカーの関連パラメーターを構成します。具体的なコードは次のとおりです。

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
    
    
    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
    
    
        registry.enableSimpleBroker("/topic");
        registry.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
    
    
        registry.addEndpoint("/ws").withSockJS();
    }
}

構成クラスは、@EnableWebSocketMessageBroker アノテーションを使用して WebSocket メッセージ ブローカー機能を有効にし、configureMessageBroker メソッドを使用してメッセージ ブローカーの関連パラメーターを構成し、registerStompEndpoints メソッドを使用して Stomp プロトコルの WebSocket エンドポイントを登録します。

configureMessageBroker メソッドでは、enableSimpleBroker メソッドを使用してメッセージ ブローカーのアドレスを設定します。ここでは、メッセージ ブローカーのアドレスを "/topic" に設定します。これは、"/topic" で始まるすべてのメッセージが、メッセージブローカー。setApplicationDestinationPrefixes メソッドは、アプリケーションの宛先プレフィックスを設定するために使用されます。ここでは、それを「/app」に設定します。これは、「/app」で始まるすべてのメッセージがコントローラーにルーティングされることを意味します。

registerStompEndpoints メソッドでは、addEndpoint メソッドを使用して WebSocket エンドポイントを追加します。ここでは WebSocket エンドポイントを「/ws」に設定し、withSockJS メソッドを使用して WebSocket をサポートしていないブラウザでの通信に対する SockJS サポートを有効にします。

ステップ 3: WebSocket コントローラーを定義する

WebSocket メッセージを処理するために、プロジェクト内に WebSocket コントローラーを定義します。具体的なコードは次のとおりです。

@Controller
public class WebSocketController {
    
    
    @MessageMapping("/hello")
    @SendTo("/topic/greetings")
    public Greeting greeting(HelloMessage message) throws Exception {
    
    
        Thread.sleep(1000); // simulated delay
        return new Greeting("Hello, "+ message.getName() + "!");
    }
}

上記のコードでは、@Controller アノテーションを使用してクラスを WebSocket コントローラーとして識別し、@MessageMapping アノテーションを使用して WebSocket リクエスト アドレス "/hello" をマップし、@SendTo アノテーションを使用してメッセージ送信用のアドレスを指定します。greeting メソッドでは、受信した HelloMessage タイプのメッセージを処理し、Greeting タイプのメッセージを返します。

ステップ 4: メッセージ タイプを定義する

WebSocket クライアントとサーバー間でメッセージを渡すためのメッセージ タイプをプロジェクトで定義します。具体的なコードは次のとおりです。

public class HelloMessage {
    
    
    private String name;

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }
}

public class Greeting {
    
    
    private String content;

    public Greeting(String content) {
    
    
        this.content = content;
    }

    public String getContent() {
    
    
        return content;
    }

    public void setContent(String content) {
    
    
        this.content = content;
    }
}

上記のコードでは、HelloMessage と Greeting という 2 つのメッセージ タイプを定義しています。これらは、それぞれクライアントによって送信されたメッセージとサーバーによって返されたメッセージを表すために使用されます。

ステップ 5: SimpMessagingTemplate を使用してメッセージを送信する

WebSocket クライアントにメッセージを送信する必要がある SimpMessagingTemplate クラスのインスタンスを挿入し、その ConvertAndSend メソッドを使用して、指定されたアドレスにメッセージを送信します。具体的なコードは次のとおりです。

@Autowired
private SimpMessagingTemplate messagingTemplate;

public void sendMessage(String destination, Object message) {
    
    
    messagingTemplate.convertAndSend(destination, message);
}

上記のコードでは、SimpMessagingTemplate クラスのインスタンス messagegingTemplate を挿入し、指定されたアドレスにメッセージを送信するための sendMessage メソッドを定義します。

要約する

SimpMessagingTemplateは、Spring FrameworkにおいてWebSocketクライアントにメッセージを送信するためのクラスであり、WebSocket通信のメッセージ送信機能を実現するために使用することができる。Spring Boot アプリケーションでは、WebSocket メッセージ プロキシを通じて WebSocket 通信を実現でき、SimpMessagingTemplate クラスを使用して WebSocket クライアントにメッセージを簡単に送信できます。この記事では、読者の役に立つことを願って、SimpMessagingTemplate の原理と使用法を紹介します。

おすすめ

転載: blog.csdn.net/2302_77835532/article/details/131482052