Spring WebSocket 是 Spring Framework 的一部分,它提供了创建WebSocket应用程序的支持。WebSocket 是一种在单个长连接上进行全双工通信的协议,它允许服务器和客户端之间进行实时数据交换。

基本概念

  • WebSocket协议:它允许服务器和客户端之间建立一个持久的连接,这个连接在数据传输期间始终保持开放状态。
  • Spring WebSocket:Spring 提供了 WebSocket 的支持,使得在 Spring 应用程序中创建 WebSocket 应用变得简单。

快速开始

以下是一个简单的 Spring WebSocket 应用程序示例:

import org.springframework.stereotype.Component;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;

@Component
public class MyWebSocketHandler extends TextWebSocketHandler {

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        session.sendMessage(new TextMessage("Hello, " + message.getPayload()));
    }
}

配置 WebSocket

在 Spring Boot 应用中,可以通过以下步骤配置 WebSocket:

  1. 添加依赖:

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

    @Configuration
    public class WebSocketConfig implements WebSocketConfigurer {
    
        @Override
        public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
            registry.addHandler(myWebSocketHandler(), "/ws").setAllowedOrigins("*");
        }
    
        @Bean
        public MyWebSocketHandler myWebSocketHandler() {
            return new MyWebSocketHandler();
        }
    }
    
  3. 启用 WebSocket:

    @SpringBootApplication
    public class WebSocketApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(WebSocketApplication.class, args);
        }
    }
    

客户端示例

以下是一个简单的 HTML 客户端示例:

<!DOCTYPE html>
<html>
<head>
    <title>WebSocket Client</title>
    <script>
        var ws = new WebSocket("ws://localhost:8080/ws");

        ws.onmessage = function(event) {
            console.log(event.data);
        };

        ws.onopen = function(event) {
            ws.send("Hello, Server!");
        };
    </script>
</head>
<body>
    <h1>WebSocket Client</h1>
</body>
</html>

扩展阅读

更多关于 Spring WebSocket 的信息,请参阅我们的Spring WebSocket 教程

[center]WebSocket