Spring Boot整合WebSocket实现实时通信,前端实时通信,前后端实时通信

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

Spring Boot整合WebSocket实现实时通信

实时通信在现代Web应用中扮演着越来越重要的角色,无论是在线聊天、股票价格更新还是实时通知,WebSocket都是实现这些功能的关键技术之一。Spring Boot作为一个简化企业级应用开发的框架,其对WebSocket的支持也非常友好。本文将详细介绍如何在Spring Boot中整合WebSocket,实现一个简单的实时通信服务。

引言

在 Spring Boot 中使用 WebSocket 有 2 种方式。第 1 种是使用由 Jakarta EE 规范提供的 Api,也就是 jakarta.websocket 包下的接口。第 2 种是使用 spring 提供的支持,也就是 spring-websocket 模块。前者是一种独立于框架的技术规范,而后者是 Spring 生态系统的一部分,可以与其他 Spring 模块(如 Spring MVC、Spring Security)无缝集成,共享其配置和功能。因为是进行学习进行使用webSocket所以进行选择第一种方式来进行实现.

本文将使用第 1 种方式,也就是使用 jakarta.websocket 来开发 WebSocket 应用。

1. 环境准备

  • JDK 1.8 或更高版本
  • Spring Boot 2.x
  • IntelliJ IDEA / Eclipse (或其他Java IDE)
  • Maven 或 Gradle 作为构建工具
  • springboot版本:3.2.5

2. 添加依赖

打开pom.xml文件,并添加WebSocket相关的依赖.

<!--实时通信webSocket依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>

3. 开发 ServerEndpoint 端点

ServerEndpoint是一个注解,用于定义WebSocket服务器端点。使用这个注解,你可以指定WebSocket的URL模式,以便客户端能够连接到你的服务.

package com.fs.webSocket;

import jakarta.websocket.*;
import jakarta.websocket.server.ServerEndpoint;

// 这个和Controller的作用是类似的
@ServerEndpoint(value = "/websocket") // 此类是一个webSocket端点 服务端,监听/websocket的路径
public class MyServerEndpoint {
    // 定义一个Session对象
    private Session session;
    // 客户端与服务端建立连接触发
    @OnOpen
    public void onOpen(Session session) {
        // 保存session
        this.session = session;
        System.out.println("websocket连接成功");
    }
    // 客户端向服务端发送消息
    @OnMessage
    public void onMessage(String message) {
        System.out.println("收到客户端消息:" + message);
    }

    // 客户端服务端连接异常触发
    @OnError
    public void onError(Session session, Throwable error) {
        System.out.println("websocket连接异常");
    }

    // 客户端与服务端断开连接触发
    @OnClose
    public void onClose(Session session) {
        System.out.println("websocket连接关闭");
    }

}

注意:所有事件方法,都支持使用 Session 作为参数,表示当前连接参数。但是为了更加方便,我们在 @OnOpen 事件中直接把 Session 存储到了当前对象中,可以在任意方法中使用 this 访问。服务器会为每个连接创建一个端点对象,所以这是线程安全的。

4. 配置webSocket

@Configuration
public class WebSocketConfig {
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        ServerEndpointExporter exporter = new ServerEndpointExporter();
        exporter.setAnnotatedEndpointClasses(MyServerEndpoint.class); // 进行手动注册webSocket端点
        return exporter;
    }
}

当然也可以在MyServerEndpoint这个类上面进行添加 @Component注解,Spring 自动扫描,这样的话不需要手动调用 setAnnotatedEndpointClasses 方法进行注册。

5.前端集成测试

在资源文件夹resorces/static/index.html中书写一个简单的前端websocket进行连接到服务器通信,

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>WebSocket</title>
</head>
<body>
<script type="text/javascript">
    let websocket = new WebSocket("ws://localhost:8080/websocket");

    // 连接断开
    websocket.onclose = e => {
        console.log(`连接关闭: code=${e.code}, reason=${e.reason}`)
    }
    // 收到消息
    websocket.onmessage = e => {
        console.log(`收到消息:${e.data}`);
    }
    // 异常
    websocket.onerror = e => {
        console.log("连接异常")
        console.error(e)
    }
    // 连接打开
    websocket.onopen = e => {
        console.log("连接打开");

        // 创建连接后,往服务器连续写入3条消息
        websocket.send("sprigdoc.cn");
        websocket.send("sprigdoc.cn");
        websocket.send("sprigdoc.cn");

        // 最后发送 bye,由服务器断开连接
        websocket.send("bye");

        // 也可以由客户端主动断开
        // websocket.close();
    }
</script>
</body>
</html>

启动应用,打开浏览器(先打开控制台),然后访问 http://localhost:8080/,查看控制台服务端输出的日志:

websocket连接成功
收到客户端消息:sprigdoc.cn
收到客户端消息:sprigdoc.cn
收到客户端消息:sprigdoc.cn
收到客户端消息:bye

此时代表连接成功!!!

结语

通过以上步骤,我们已经创建了一个简单的Spring Boot WebSocket的连接。展示了如何使用Spring Boot和WebSocket实现实时通信的基础。在实际项目中,你可能需要考虑更多的因素,如安全性、连接管理、广播优化等。

希望这篇教程能够帮助你开始探索Spring Boot与WebSocket的整合。如果你有任何疑问或建议,请在评论区告诉我。祝你编程愉快!文章来源地址https://www.toymoban.com/news/detail-860110.html

附录

  • Spring Boot官方文档: https://docs.spring.io/spring-boot/docs/current/reference/html/websocket.html
  • WebSocket协议规范: https://tools.ietf.org/html/rfc6455

到了这里,关于Spring Boot整合WebSocket实现实时通信,前端实时通信,前后端实时通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Spring Boot 3 + Vue 3 整合 WebSocket (STOMP协议) 实现广播和点对点实时消息

    🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请纠正! WebSocket是一种在Web浏览器与Web服务器之间建立双向通信的协议,而Spring Boot提供了便捷的WebSocket支持

    2024年02月02日
    浏览(38)
  • 进度变动实时通知-使用SocketIO实现前后端的通信(基于WebSocket的实时通信库)

    最近在接触的一个项目,将PDF上传到项目里,通过调用OCR云服务把PDF里的表格数据识别出来。在此过程中,前后端需要实时通信,对识别数据进行“进度跟踪”。因此我们采用SocketIO的通讯方式,识别中前端和后端服务建立SocketIO连接,根据事件进行数据的实时更新百分比进度

    2024年02月06日
    浏览(37)
  • Spring Boot实践:构建WebSocket实时通信应用程序并创建订阅端点

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

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

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

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

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

    2024年01月23日
    浏览(38)
  • Spring WebSocket实现实时通信,构建高可靠的实时交互系统

    Spring WebSocket是基于WebSocket协议的一个开源框架,它使得开发人员可以更加方便地建立实时通信机制,以推送消息和数据并实时更新通信系统中的状态。Spring WebSocket被广泛应用于社交网站、电子商务、在线游戏等WEB应用程序中,以实现实时通信和即时响应。 Spring WebSocket的一个

    2024年02月12日
    浏览(34)
  • 如何实现前端实时通信(WebSocket、Socket.io等)?

    聚沙成塔·每天进步一点点 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而

    2024年01月22日
    浏览(28)
  • 【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日
    浏览(29)
  • Spring Boot整合Kafka+SSE实现实时数据展示

    2024年3月10日 不使用Rabbitmq或者Rocketmq是因为Kafka是Hadoop集群下的组成部分,对于大数据的相关开发适应性好,且当前业务场景下不需要使用死信队列,不过要注意Kafka对于更新时间慢的数据拉取也较慢,因此对与实时性要求高可以选择其他MQ。 使用消息队列是因为该中间件具有

    2024年04月24日
    浏览(27)
  • 前端(二十一)——WebSocket:实现实时双向数据传输的Web通信协议

    🤨博主:小猫娃来啦 🤨文章核心: WebSocket:实现实时双向数据传输的Web通信协议 在当今互联网时代,实时通信已成为很多应用的需求。为了满足这种需求,WebSocket协议被设计出来。WebSocket是一种基于TCP议的全双工通信协议,通过WebSocket,Web应用程序可以与服务器建立持久

    2024年02月04日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包