Spring Boot实践:构建WebSocket实时通信应用程序并创建订阅端点

这篇具有很好参考价值的文章主要介绍了Spring Boot实践:构建WebSocket实时通信应用程序并创建订阅端点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作为一款流行的Java开发框架,Spring Boot可以轻松地集成WebSocket。WebSocket能够为Web应用程序提供实时通信功能,而Spring Boot的优秀特性使得它可以很容易地实现WebSocket的集成。在本篇文章中,我们将演示如何使用Spring Boot框架来构建一个简单的WebSocket应用程序。

1. 创建Spring Boot项目

首先,我们需要创建一个新的Spring Boot项目。可以使用Spring Initializr来生成一个基于Maven或Gradle的项目结构。在项目生成页面中,我们需要选择以下的选项:

  • 项目类型:Maven或Gradle,根据自己的偏好选择
  • 语言:Java
  • Spring Boot版本:最新版本
  • 项目元数据:根据个人喜好填写

2. 集成WebSocket

要在Spring Boot应用程序中使用WebSocket,我们需要添加Spring的WebSocket模块依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖:

xml
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

在Gradle项目中,可以在build.gradle文件中添加以下依赖:

dependencies {
   implementation 'org.springframework.boot:spring-boot-starter-websocket'
}

3. 创建WebSocket端点

一旦我们集成了WebSocket模块,就可以开始创建WebSocket端点了。WebSocket端点是实际处理来自客户端连接的请求的地方。在Spring Boot中,我们可以使用@ServerEndpoint注释来定义WebSocket端点。
在本示例中,我们将创建一个简单的WebSocket端点,在订阅时向客户端发送一条欢迎消息,并在接收到消息时将其广播给所有已连接的客户端。以下是实现这些功能的代码:

import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import org.springframework.stereotype.Component;
 @ServerEndpoint("/")
@Component
public class WebSocketEndpoint {
   private static Set<Session> sessions = Collections.synchronizedSet(new HashSet<>());
    @OnOpen
   public void onOpen(Session session) {
       sessions.add(session);
       sendWelcomeMessage(session);
   }
    @OnClose
   public void onClose(Session session) {
       sessions.remove(session);
   }
    @OnMessage
   public void onMessage(String message, Session session) throws IOException {
       broadcast(message, session);
   }
    private void sendWelcomeMessage(Session session) {
       try {
           session.getBasicRemote().sendText("Welcome to the WebSocket example!");
       } catch (IOException ex) {
           ex.printStackTrace();
       }
   }
    private void broadcast(String message, Session senderSession) throws IOException {
       for (Session session : sessions) {
           if (!session.equals(senderSession)) {
               session.getBasicRemote().sendText(message);
           }
       }
   }
}

如上所述,我们定义了一个名为WebSocketEndpoint的类,并使用@ServerEndpoint注释标注。该类还使用了@Component注释,以使得Spring Boot可以自动将其实例化和管理。
我们还实现了三个方法:onOpen、onClose和onMessage。在onOpen方法中,我们将新连接的会话添加到会话集合中,并向该会话发送欢迎消息。在onClose方法中,我们将终止的会话从会话集合中删除。在onMessage方法中,我们将收到的消息广播给所有连接的客户端,除了发送该消息的客户端之外。

4. 创建订阅端点

在本示例中,我们将创建一个简单的订阅端点,客户端可以使用该端点来订阅来自WebSocket端点的消息。以下是订阅端点的实现代码:

import java.io.IOException;
import javax.websocket.OnMessage;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import org.springframework.stereotype.Component;
 @ServerEndpoint("/subscribe")
@Component
public class SubscribeEndpoint {
    @OnMessage
   public void onMessage(String message, Session session) throws IOException {
       //TODO: subscribe to WebSocketEndpoint messages
   }
}

如上所述,我们定义了一个名为SubscribeEndpoint的类,并使用@ServerEndpoint注释标注。该类还使用了@Component注释。
我们在SubscribeEndpoint中实现了onMessage方法,该方法可以处理客户端发送的订阅请求。在真实的应用程序中,我们可能会实现更复杂的订阅逻辑,例如在后台与其他系统交互以获取实时数据。

5. 测试

一旦我们创建了WebSocket端点和订阅端点,我们可以开始测试我们的实现了。我们可以使用任何WebSocket客户端,例如浏览器中的JavaScript WebSocket API,来访问WebSocket端点。
要在浏览器中测试WebSocket端点,我们只需编写以下JavaScript代码:

let ws = new WebSocket("ws://localhost:8080");
ws.onmessage = function(event) {
   console.log("Received message: " + event.data);
};
ws.send("Hello, server!");

如上所述,我们使用WebSocket的构造函数来创建WebSocket连接,并指定WebSocket端点的URL。我们还使用WebSocket对象的onmessage事件处理程序来处理从服务器接收的消息,并使用WebSocket对象的send方法来发送消息。
我们还可以使用任何WebSocket客户端来测试SubscribeEndpoint。要测试SubscribeEndpoint,我们只需将订阅请求发送到订阅端点,如下所示:

let ws = new WebSocket("ws://localhost:8080/subscribe");
ws.send("subscribe!");

在真实的应用程序中,我们将使用更复杂的订阅逻辑来获取实时数据并显示在页面上。

总结

通过本文,我们学习了如何在Spring Boot中集成WebSocket,并创建了一个简单的WebSocket应用程序,该应用程序可以向客户端发送欢迎消息,并广播所有来自客户端的消息给所有连接的客户端。我们还创建了一个简单的订阅端点,以便WebSocket客户端可以使用该端点来订阅消息。文章来源地址https://www.toymoban.com/news/detail-428419.html

到了这里,关于Spring Boot实践:构建WebSocket实时通信应用程序并创建订阅端点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot进阶(49):实时通信不再是梦想,SpringBoot+WebSocket助你轻松实现前后端即时通讯!

            在上一期,我对WebSocket进行了基础及理论知识普及学习,WebSocket是一种基于TCP协议实现的全双工通信协议,使用它可以实现实时通信,不必担心HTTP协议的短连接问题。Spring Boot作为一款微服务框架,也提供了轻量级的WebSocket集成支持,本文将介绍如何在Spring Boot项

    2024年02月11日
    浏览(41)
  • 使用React 18和WebSocket构建实时通信功能

    WebSocket 是一种在 Web 应用中实现双向通信的协议。它允许服务器主动向客户端推送数据,而不需要客户端发起请求。在现代的实时应用中, WebSocket 经常用于实时数据传输、聊天功能、实时通知和多人协作等场景。在本篇博客中,我们将探索如何在 React 18 应用中使用 WebSocke

    2024年02月05日
    浏览(31)
  • Spring Boot:轻松构建Java应用程序

    Spring Boot 是一个用于简化Spring应用程序开发的框架。通过自动配置和提供各种生产级功能,Spring Boot帮助开发者更快速、更简单地构建基于Spring的应用程序。在这篇博客中,我们将探讨Spring Boot的特点以及如何开始使用它。 Spring Boot 的主要优势在于它简化了Spring应用程序的开

    2024年02月01日
    浏览(32)
  • 【Spring Boot】数据库持久层框架MyBatis — Spring Boot构建MyBatis应用程序

    Spring Boot是用于快速构建Spring应用程序的框架。MyBatis是一种Java持久化框架,可以帮助开发人员轻松地管理数据库。将Spring Boot与MyBatis结合使用可以使开发人员更容易地创建和管理数据库应用程序。 以下是使用Spring Boot构建MyBatis应用程序的步骤: 添加MyBatis依赖项:在项目的

    2024年02月10日
    浏览(42)
  • 使用Spring WebSocket实现实时通信功能

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页 ——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》 🐾 学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础

    2024年02月09日
    浏览(28)
  • 快速入门:使用 Spring Boot 构建 Web 应用程序

    本文将讨论以下主题: 安装 Java JDK、Gradle 或 Maven 和 Eclipse 或 IntelliJ IDEA 创建一个新的 Spring Boot 项目 运行 Spring Boot 应用程序 编写一个简单的 Web 应用程序 打包应用程序以用于生产环境 通过这些主题,您将能够开始使用 Spring Boot 并创建自己的 Web 应用程序。 Spring Boot是一个

    2024年02月07日
    浏览(62)
  • Spring WebSocket实现实时通信的详细教程

    WebSocket 是基于TCP/IP协议,独立于HTTP协议的通信协议。WebSocket 连接允许客户端和服务器之间的全双工通信,以便任何一方都可以通过已建立的连接将数据推送到另一方。 我们常用的HTTP是客户端通过「请求-响应」的方式与服务器建立通信的,必须是客户端主动触发的行为,服

    2024年01月23日
    浏览(38)
  • Spring Boot + WebSocket 实时监控,实战来了!

    此异常非彼异常,标题所说的异常是业务上的异常。 最近做了一个需求,消防的设备巡检,如果巡检发现异常,通过手机端提交,后台的实时监控页面实时获取到该设备的信息及位置,然后安排员工去处理。 因为需要服务端主动向客户端发送消息,所以很容易的就想到了用

    2024年02月05日
    浏览(34)
  • 【Spring Boot 实现 WebSocket实时数据推送-服务端】

    一、WebSocket配置类 二、WebSocket服务端类 三、WebSocket的连接池类 四、启动Spring Boot服务 五、测试WebSocket连接 WebSocket在线测试工具: http://www.easyswoole.com/wstool.html 测试连接 服务地址:ws://172.18.42.29:14785/endPoint/1 服务启动的IP:172.18.42.29 服务端口:14785 WS的URl:/endPoint 入参:1 六

    2023年04月25日
    浏览(31)
  • “深入了解Spring Boot:构建高效、可扩展的Java应用程序“

    标题:深入了解Spring Boot:构建高效、可扩展的Java应用程序 摘要:Spring Boot是一款快速构建Java应用程序的开发框架,它基于Spring框架,提供了一系列的自动化配置和约定,使得开发者能够更快速、更高效地构建出高质量的应用程序。本文将深入探讨Spring Boot的核心特性和使用

    2024年02月14日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包