溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot與WebSocket實時通信

發布時間:2024-10-05 08:37:02 來源:億速云 閱讀:186 作者:小樊 欄目:編程語言

Spring Boot與WebSocket實時通信是一種利用WebSocket技術實現服務器與客戶端之間實時數據傳輸的方法。WebSocket是一種在單個TCP連接上進行全雙工通信的協議,它使得服務器能夠主動向客戶端推送數據,從而實現實時通信。

要在Spring Boot中實現WebSocket實時通信,你需要遵循以下步驟:

  1. 添加依賴

在你的Spring Boot項目中,需要添加spring-boot-starter-websocket依賴。在pom.xml文件中添加以下內容:

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

創建一個配置類,繼承AbstractWebSocketMessageBrokerConfigurer,并覆蓋configureMessageBrokerregisterStompEndpoints方法。例如:

@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("/websocket-demo").withSockJS();
    }
}

這里,我們啟用了簡單的消息代理,將/topic作為廣播消息的前綴,將/app作為客戶端訂閱的前綴。同時,我們添加了一個使用SockJS的WebSocket端點/websocket-demo。

  1. 創建消息處理器

創建一個類,實現WebSocketHandler接口,用于處理WebSocket消息。例如:

public class MyWebSocketHandler implements WebSocketHandler {

    @Override
    public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
        // 處理接收到的消息
    }

    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        // 連接建立后的操作
    }

    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
        // 連接關閉后的操作
    }
}
  1. 發送消息

在控制器或其他需要發送消息的地方,使用SimpMessagingTemplate發送消息。例如:

@Autowired
private SimpMessagingTemplate messagingTemplate;

public void sendMessage(String destination, String message) {
    messagingTemplate.convertAndSend(destination, message);
}
  1. 客戶端代碼

在客戶端,你可以使用原生的WebSocket API或者第三方庫(如SockJS)來連接服務器并接收消息。例如,使用SockJS的JavaScript客戶端代碼如下:

<!DOCTYPE html>
<html>
<head>
    <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>
    <script>
        var socket = new SockJS('/websocket-demo');
        var stompClient = Stomp.over(socket);

        stompClient.connect({}, function (frame) {
            console.log('Connected: ' + frame);
            stompClient.subscribe('/topic/messages', function (response) {
                console.log('Received message: ' + response.body);
            });
        });
    </script>
</body>
</html>

這樣,當服務器通過sendMessage方法發送消息到/topic/messages時,客戶端就能實時接收到這些消息。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女