91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
乌拉特前旗| 仙居县| 彭泽县| 外汇| 兴隆县| 喀喇沁旗| 郑州市| 南京市| 平乡县| 林芝县| 安化县| 东海县| 吴桥县| 西昌市| 响水县| 镇巴县| 锡林浩特市| 通海县| 梅河口市| 崇阳县| 龙井市| 木兰县| 定南县| 比如县| 门源| 区。| 伊宁市| 辽阳市| 青州市| 珠海市| 恩施市| 农安县| 丹巴县| 凤阳县| 泾源县| 潼关县| 青岛市| 澜沧| 阳谷县| 美姑县| 陆河县|