Spring Boot与WebSocket通信实现

发布时间:2024-11-15 12:22:03 作者:小樊
来源:亿速云 阅读:81

Spring Boot 是一个用于简化 Spring 应用程序开发的框架,它提供了许多开箱即用的功能,使得开发人员能够快速构建和部署应用程序。WebSocket 是一种网络通信协议,它允许在客户端和服务器之间进行全双工通信。结合 Spring Boot 和 WebSocket,可以实现实时应用程序的开发。

下面是一个简单的示例,展示了如何使用 Spring Boot 和 WebSocket 实现通信功能:

  1. 添加依赖

pom.xml 文件中添加 Spring Boot 和 WebSocket 的依赖:

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

创建一个配置类 WebSocketConfig,继承 AbstractWebSocketMessageBrokerConfigurer,并配置 WebSocket 的相关信息:

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

这里配置了一个名为 /websocket 的 WebSocket 端点,并使用 SockJS 作为后备选项。同时,启用了简单的消息代理,用于将消息发布到 /topic 路径。

  1. 创建 WebSocket 控制器

创建一个控制器 WebSocketController,用于处理客户端发送的消息:

@Controller
public class WebSocketController {

    @MessageMapping("/send")
    @SendTo("/topic/messages")
    public String handleMessage(@Payload String message) {
        return "Received message: " + message;
    }
}

这里定义了一个名为 /send 的消息处理方法,使用 @MessageMapping 注解映射到 WebSocket 端点。当客户端发送消息到 /app/send 时,该方法将被调用,并将消息发布到 /topic/messages

  1. 创建客户端

创建一个简单的 HTML 页面,用于与 WebSocket 服务器进行通信:

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

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

        function sendMessage() {
            var message = document.getElementById('message').value;
            stompClient.send("/app/send", {}, message);
        }
    </script>
</head>
<body>
    <input type="text" id="message" placeholder="Type your message here">
    <button onclick="sendMessage()">Send</button>
</body>
</html>

这里使用 SockJS 和 Stomp.js 库创建了一个 WebSocket 客户端,连接到 /websocket 端点,并订阅了 /topic/messages 主题。当用户点击发送按钮时,客户端将向服务器发送消息。

现在,你可以运行 Spring Boot 应用程序,并在浏览器中打开 HTML 页面。当用户在输入框中输入消息并点击发送按钮时,服务器将接收到消息并将其发布到 /topic/messages 主题,客户端将接收到并显示该消息。

推荐阅读:
  1. SpringBoot中添加Websocket支持的方法
  2. 天天玩微信,Spring Boot 开发私有即时通信系统了解一下

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

spring boot

上一篇:Spring Boot中Mail服务发送邮件

下一篇:Spring Boot中的Spring Data JPA

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》