亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
峨眉山市| 郎溪县| 阿图什市| 临沂市| 揭东县| 古丈县| 达州市| 大冶市| 福安市| 酉阳| 德化县| 桃园市| 老河口市| 景谷| 奉化市| 井研县| 阿瓦提县| 聊城市| 天峨县| 乐都县| 宁夏| 东乡族自治县| 沙坪坝区| 民勤县| SHOW| 凤翔县| 崇信县| 错那县| 绵阳市| 方城县| 平潭县| 长治市| 屏东县| 中山市| 嵊泗县| 湘西| 云梦县| 聊城市| 体育| 潮州市| 轮台县|