欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > Spring Boot实现WebSocket详解

Spring Boot实现WebSocket详解

2025/5/2 15:40:48 来源:https://blog.csdn.net/NiNg_1_234/article/details/143833858  浏览:    关键词:Spring Boot实现WebSocket详解

文章目录

  • Spring Boot实现WebSocket详解
    • 一、引言
    • 二、Spring Boot集成WebSocket
      • 1、添加依赖
      • 2、配置WebSocket
      • 3、创建消息模型
      • 4、创建消息处理器
      • 5、前端实现
    • 三、实现实时消息传递和群发消息
      • 1、实时消息传递
      • 2、群发消息
    • 四、总结

Spring Boot实现WebSocket详解

一、引言

在现代Web开发中,实时通信成为了提升用户体验的关键技术之一。WebSocket作为一种在单个TCP连接上进行全双工通信的协议,允许服务器主动向客户端发送消息,非常适合需要实时数据交换的应用场景,如在线聊天、实时通知等。Spring Boot通过集成Spring WebSocket模块,提供了一种简洁的方式来实现WebSocket通信。本文将详细介绍如何在Spring Boot中实现WebSocket,包括配置、编码以及实现实时消息传递和群发消息。

二、Spring Boot集成WebSocket

1、添加依赖

首先,我们需要在Spring Boot项目的pom.xml文件中添加WebSocket的依赖。

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

2、配置WebSocket

接下来,我们需要创建一个配置类来设置WebSocket的消息代理和端点。

package com.example.demo.config;import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {@Overridepublic void configureMessageBroker(MessageBrokerRegistry config) {config.enableSimpleBroker("/topic");config.setApplicationDestinationPrefixes("/app");}@Overridepublic void registerStompEndpoints(StompEndpointRegistry registry) {registry.addEndpoint("/websocket-endpoint").withSockJS();}
}

在上述配置中,我们启用了简单的消息代理,并设置了应用前缀为/app。同时,我们注册了一个STOMP端点,并启用了SockJS支持。

3、创建消息模型

定义一个简单的消息模型,用于在WebSocket通信中传递消息。

package com.example.demo.model;public class Message {private String content;private String sender;// 构造函数、getter和setter方法public Message() {}public Message(String content, String sender) {this.content = content;this.sender = sender;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String getSender() {return sender;}public void setSender(String sender) {this.sender = sender;}
}

4、创建消息处理器

创建一个控制器来处理WebSocket消息。

package com.example.demo.handler;import com.example.demo.model.Message;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;@Controller
public class MessageHandler {@MessageMapping("/send")@SendTo("/topic/messages")public Message sendMessage(Message message) {return new Message("Hello, WebSocket!", "System");}
}

在这个控制器中,我们定义了一个sendMessage方法,它将处理发送到/send目的地的消息,并将响应发送到/topic/messages主题。

5、前端实现

创建一个简单的HTML页面和JavaScript代码,用于连接WebSocket服务器并发送消息。

<!DOCTYPE html>
<html>
<head><title>WebSocket Demo</title><script src="https://cdn.jsdelivr.net/npm/sockjs-client/dist/sockjs.min.js"></script><script src="https://cdn.jsdelivr.net/npm/stompjs/lib/stomp.min.js"></script>
</head>
<body><div><input type="text" id="messageInput" placeholder="Type a message..."><button onclick="sendMessage()">Send</button></div><ul id="messagesList"></ul><script>var socket = new SockJS('/websocket-endpoint');var stompClient = Stomp.over(socket);stompClient.connect({}, function (frame) {stompClient.subscribe('/topic/messages', function (message) {var messagesList = document.getElementById('messagesList');var listItem = document.createElement('li');listItem.textContent = message.body;messagesList.appendChild(listItem);});});function sendMessage() {var messageInput = document.getElementById('messageInput');stompClient.send('/app/send', {}, messageInput.value);messageInput.value = '';}</script>
</body>
</html>

在上述代码中,我们创建了一个HTML页面,用户可以通过输入框发送消息,并通过JavaScript连接到WebSocket服务器。

三、实现实时消息传递和群发消息

1、实时消息传递

为了实现实时消息传递,我们可以在MessageHandler中添加一个方法来接收客户端发送的消息。

@MessageMapping("/receive")
@SendTo("/topic/messages")
public Message receiveMessage(Message message) {return new Message("Received your message: " + message.getContent(), "System");
}

2、群发消息

WebSocketConfig中配置广播代理,以实现群发消息。

@Override
public void configureMessageBroker(MessageBrokerRegistry config) {config.enableSimpleBroker("/topic");config.setApplicationDestinationPrefixes("/app");config.setBrokerDeliveryMode(MessageBrokerRegistry.BrokerDeliveryMode.BROADCASTING);
}

通过设置BrokerDeliveryModeBROADCASTING,所有发送到/topic/messages的消息都会被广播到所有连接的客户端。

四、总结

本文详细介绍了如何在Spring Boot中实现WebSocket,包括添加依赖、配置WebSocket、创建消息模型和处理器,以及如何实现实时消息传递和群发消息。通过这些步骤,您可以在Spring Boot应用程序中轻松集成WebSocket,实现实时通信功能。希望本文能够帮助您在开发中更加得心应手。


版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

  • Java实战:Spring Boot实现WebSocket实时通信

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词