当前位置:首页 > 编程技术 > 正文内容

java如何用springboot编写一个简单的websocket通信功能

yc8883个月前 (06-22)编程技术123

6. 客户端连接与交互

java如何用springboot编写一个简单的websocket通信功能

客户端可以使用JavaScript的WebSocket API或者像SockJS这样的库来与服务器建立WebSocket连接并发送/接收消息。这里简单展示一个使用SockJS和Stomp.js的HTML页面示例:

1. 创建Spring Boot项目

首先,确保你已经安装了Java开发环境和Maven或Gradle。使用Spring Initializr(https://start.spring.io/)创建一个新的Spring Boot项目,选择你需要的依赖。对于WebSocket,你需要添加spring-boot-starter-websocket依赖。

2. 添加依赖

如果你使用的是Maven,那么在pom.xml中添加如下依赖:

<dependencies>    <!-- Spring Boot Starter Websocket -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-websocket</artifactId>    </dependency>    <!-- Spring Boot Starter Web -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency> </dependencies>

3. 配置WebSocket

在Spring Boot应用中,我们通常需要配置一个WebSocket的处理器以及一个消息代理来处理连接和消息传递。

WebSocket配置类

创建一个配置类,用于设置WebSocket的相关配置。例如,创建一个名为WebSocketConfig.java的文件:

import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; import org.springframework.web.socket.config.annotation.StompEndpointRegistry; import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {    @Override    public void registerStompEndpoints(StompEndpointRegistry registry) {        // 注册一个STOMP端点,客户端可以通过这个端点连接到WebSocket服务        registry.addEndpoint("/ws").withSockJS();    }    @Override    public void configureMessageBroker(MessageBrokerRegistry config) {        // 配置一个消息代理,用于接收和发送消息        config.enableSimpleBroker("/topic");        config.setApplicationDestinationPrefixes("/app");    } }

4. 编写消息处理器

接下来,我们需要创建一个处理消息的控制器类。这个控制器会处理从客户端发来的消息,并可以向客户端推送消息。

import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.handler.annotation.SendTo; import org.springframework.stereotype.Controller; @Controller public class WebSocketController {    @MessageMapping("/sendMessage")    @SendTo("/topic/messages")    public OutputMessage sendMessage(OutputMessage message) throws Exception {        System.out.println("Received: " + message.getMessage());        return message;    } }

这里,@MessageMapping注解定义了客户端发送消息的路径,而@SendTo则指定了消息应被广播到的订阅者目的地。

5. 消息模型

为了方便处理消息,我们定义一个简单的消息模型类OutputMessage.java

public class OutputMessage {    private String from;    private String message;    private Long timestamp;    // 构造函数、getters和setters省略... }

6. 客户端连接与交互

客户端可以使用JavaScript的WebSocket API或者像SockJS这样的库来与服务器建立WebSocket连接并发送/接收消息。这里简单展示一个使用SockJS和Stomp.js的HTML页面示例:

<!DOCTYPE html> <html> <head>    <title>WebSocket Test</title>    <script src="https://cdn.jsdelivr.net/npm/@stomp/stompjs@6.0.0/dist/stomp.min.js"></script>    <script src="https://cdn.jsdelivr.net/npm/sockjs-client@1.5.0/dist/sockjs.min.js"></script> </head> <body>    <div id="messages"></div>    <input type="text" id="messageInput"/>    <button onclick="sendMessage()">Send</button>    <script>        var socket = new SockJS('/ws');        var stompClient = Stomp.over(socket);        stompClient.connect({}, function(frame) {            stompClient.subscribe('/topic/messages', function(messageOutput) {                var message = JSON.parse(messageOutput.body);                document.getElementById('messages').innerHTML +=                    '<div><strong>' + message.from + ':</strong> ' + message.message + '</div>';            });        });        function sendMessage() {            var input = document.getElementById('messageInput');            stompClient.send("/app/sendMessage", {}, JSON.stringify({                'from': 'user',                'message': input.value,                'timestamp': new Date().getTime()            }));            input.value = '';        }    </script> </body> </html>

通过以上步骤,你就成功地在Spring Boot应用中实现了WebSocket的简单通信功能。这只是一个基础示例,实际应用中可能需要考虑更多的错误处理、安全性以及更复杂的消息模式。希望这个指南能为你提供一个良好的起点。

本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://10zhan.com/biancheng/11406.html

分享给朋友:

“java如何用springboot编写一个简单的websocket通信功能” 的相关文章

【说站】Thymeleaf报错Error resolving template “XXX”

【说站】Thymeleaf报错Error resolving template “XXX”

修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

【说站】用一句话就可以去除宝塔面板操作上的二次验证

【说站】用一句话就可以去除宝塔面板操作上的二次验证

用过宝塔的朋友应该都会发现,现在宝塔面板有些鸡肋的功能,删除文件、删除数据库、删除站点等操作都需要做计算题!不仅加了几秒的延时等待,还无法跳过!这时候就会有朋友在想,如何去除宝塔面板的二次验证,此篇文...

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

这篇文章主要介绍了详解Centos8 配置静态IP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来学习一下!1. 查看自己的网关地址点击虚...

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

今天在安装MySQL时出现starting the server失败,经过查询分析得出以下结论,记录一下操作步骤。原因分析:如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。star...

【说站】vagrant实现linux虚拟机的安装并配置网络

【说站】vagrant实现linux虚拟机的安装并配置网络

一、VirtualBox的下载和安装1、下载VirtualBox官网下载:https://www.virtualbox.org/wiki/Downloads我的电脑是Windows的,所以下载Wind...

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

PDF中的墨迹注释(Ink Annotation),表现为徒手涂鸦式的形状;该类型的注释,可任意指定形状顶点的位置及个数,通过指定的顶点,程序将连接各点绘制成平滑的曲线。下面,通过C#程序代码介绍如何...