中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

java stomp如何實現消息傳遞

小樊
98
2024-09-10 14:50:15
欄目: 編程語言

在Java中,使用STOMP(Simple Text Oriented Messaging Protocol)協議實現消息傳遞的方法如下:

  1. 添加依賴

首先,你需要在項目中添加STOMP相關的依賴。如果你使用的是Maven,可以在pom.xml文件中添加以下依賴:

   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
  1. 配置WebSocket和STOMP

創建一個配置類,繼承AbstractWebSocketMessageBrokerConfigurer,并重寫configureMessageBrokerregisterStompEndpointsconfigureClientInboundChannel方法。例如:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/app");
    }

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

    @Override
    public void configureClientInboundChannel(ChannelRegistration registration) {
        registration.interceptors(new TopicSubscriptionInterceptor());
    }
}
  1. 創建消息處理器

創建一個消息處理器類,用于處理客戶端發送的消息。例如:

@Controller
public class ChatController {

    @MessageMapping("/chat.sendMessage")
    @SendTo("/topic/public")
    public ChatMessage sendMessage(@Payload ChatMessage chatMessage) {
        return chatMessage;
    }

    @MessageMapping("/chat.addUser")
    @SendTo("/topic/public")
    public ChatMessage addUser(@Payload ChatMessage chatMessage, SimpMessageHeaderAccessor headerAccessor) {
        headerAccessor.getSessionAttributes().put("username", chatMessage.getSender());
        return chatMessage;
    }
}
  1. 創建消息模型

創建一個消息模型類,用于在客戶端和服務器之間傳遞數據。例如:

public class ChatMessage {
    private String content;
    private String sender;
    private MessageType type;

    // 構造函數、getter和setter方法
}
  1. 前端實現

在前端,你需要使用SockJS和stomp.js庫來連接WebSocket服務器并發送和接收消息。例如:

<!DOCTYPE html>
<html>
<head>
   <title>Chat</title>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/sockjs-client/1.5.0/sockjs.min.js"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/stomp.js/2.3.3/stomp.min.js"></script>
</head>
<body>
    <div id="chat">
        <!-- 前端代碼 -->
    </div>

   <script>
        // 連接WebSocket服務器
        var socket = new SockJS('/chat');
        var stompClient = Stomp.over(socket);
        stompClient.connect({}, function (frame) {
            // 訂閱公共主題
            stompClient.subscribe('/topic/public', function (message) {
                // 處理接收到的消息
            });

            // 發送消息
            stompClient.send("/app/chat.sendMessage", {}, JSON.stringify({content: 'Hello', sender: 'User'}));
        });
    </script>
</body>
</html>

這樣,你就實現了使用STOMP協議在Java中進行消息傳遞的功能。你可以根據自己的需求對代碼進行修改和擴展。

0
西畴县| 芜湖市| 静安区| 迁西县| 柘城县| 康平县| 霍林郭勒市| 阆中市| 崇左市| 红河县| 井冈山市| 浦东新区| 称多县| 凌海市| 金沙县| 上杭县| 巴彦淖尔市| 丁青县| 房山区| 大邑县| 股票| 安福县| 子长县| 蓝山县| 定日县| 广灵县| 马鞍山市| 宁明县| 图木舒克市| 鲁山县| 辽阳县| 饶平县| 汕尾市| 丰顺县| 莱州市| 黑龙江省| 汪清县| 敖汉旗| 称多县| 芒康县| 仁怀市|