SpringBoot整合Websocket

SPringboot整合WebSocket 在现代Web应用中,实时通信变得越来越重要。WebSocket提供了一种在单个连接上进行全双工通信的方式,允许服务器主动向客户端发送消息。Spring Boot作为Java开发中流行的微框架,整合WebSocket可以非常方便地实现实时通信功能。本文将介绍如何在Spring Boot项目中整合WebSocket。提示:以下是本篇文章正文内容,下面案例可供参考通过上述步骤,我们可以在Spring Boot项目中整合WebSocket,实现服务器与客户端之间的实时通信。 阅读详情

SpringBoot整合Websocket

整合步骤很简单,请看下文分解。👇

  1. 引入Maven依赖,如下:

    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-websocket</artifactId>
    	<version>2.3.3.RELEASE</version>
    </dependency>
    
  2. 新建一个类:WebSocketTextMsgConfig,实现WebSocketConfigurer接口,如下:

    package com.example.textMessageWebsocket;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.socket.config.annotation.EnableWebSocket;
    import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
    import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
    
    @Configuration
    @EnableWebSocket
    public class WebSocketTextMsgConfig implements WebSocketConfigurer {
    
        @Autowired
        WebSocketTextmsgHandler webSocketTextmsgHandler;
    
        @Override
        public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
            // 添加某个Websocket URL请求的处理逻辑,这里是以ws开头的URL
            // 统一交给WebSocketTextmsgHandler类处理
            registry.addHandler(webSocketTextmsgHandler, "/ws")
                    // 为握手请求配置拦截器
                    .addInterceptors(new WebsocketTextMsgInteceptor())
                    .setAllowedOrigins("*");
        }
    }
    
    

    该类主要是配置Websocket,包括配置指定URL的处理逻辑或握手请求的拦截器等。

  3. 接下来新建一个类:WebSocketTextmsgHandler,继承TextWebSocketHandler类,如下:

    package com.example.textMessageWebsocket;
    
    import org.springframework.stereotype.Component;
    import org.springframework.web.socket.CloseStatus;
    import org.springframework.web.socket.TextMessage;
    import org.springframework.web.socket.WebSocketMessage;
    import org.springframework.web.socket.WebSocketSession;
    import org.springframework.web.socket.handler.TextWebSocketHandler;
    
    @Component
    public class WebSocketTextmsgHandler extends TextWebSocketHandler {
    
    
    	// 建立Websocket连接后的处理逻辑
        @Override
        public void afterConnectionEstablished(WebSocketSession session) throws Exception {
            System.out.println("connection established.");
            System.out.println("session id:"+session.getId());
            System.out.println("uri:"+session.getUri());
            super.afterConnectionEstablished(session);
        }
    
        // 主要的Websocket消息处理逻辑
        @Override
        public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
            Object payload = message.getPayload();
            System.out.println("payload:"+payload);
            session.sendMessage(new TextMessage("hello,"+payload));
            super.handleMessage(session, message);
        }
    
        @Override
        public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
            super.handleTransportError(session, exception);
        }
    
        @Override
        public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
            System.out.println("connection closed.");
            super.afterConnectionClosed(session, status);
        }
    }
    
    

    该类主要用于处理文本类型的Websocket消息,如果需要处理二进制消息内容,继承BinaryWebSocketHandler类即可。

  4. (可选)新建一个类:WebsocketTextMsgInteceptor,继承HttpSessionHandshakeInterceptor类,主要用于握手请求的处理逻辑,如下:

    package com.example.textMessageWebsocket;
    
    import org.springframework.http.server.ServerHttpRequest;
    import org.springframework.http.server.ServerHttpResponse;
    import org.springframework.stereotype.Component;
    import org.springframework.web.socket.WebSocketHandler;
    import org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor;
    
    import java.util.Map;
    
    @Component
    public class WebsocketTextMsgInteceptor extends HttpSessionHandshakeInterceptor {
    
        @Override
        public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
            System.out.println("before hand shake.");
            return super.beforeHandshake(request, response, wsHandler, attributes);
        }
    
        @Override
        public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception ex) {
            System.out.println("after hand shake.");
            super.afterHandshake(request, response, wsHandler, ex);
        }
    }
    
    
  5. 新建Springboot启动类,如下:

    package com.example.messagingstompwebsocket;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.ComponentScan;
    
    @SpringBootApplication(scanBasePackages = {"com.example"})
    public class SpringWebsocketExampleApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(SpringWebsocketExampleApplication.class, args);
    	}
    }
    
    

    运行main方法后,Websokect服务就已经启动起来,可以通过Websocket客户端进行测试。

SpringBoot整合WebSocket服务 1、前言注意: 仅使用 SpringBoot封装好的 spring-boot-starter-websocket 服务,并不是使用第三方 Netty或者 Apache MINAspring-boot-starter-web: 底层使用 Java WebSocket API (JSR-356)实现spring-boot-starter-webflux: 底层使用 Netty实现(没有使用过,不知道具体)官方文档1官方文档22、开始使用2.1、加入Maven依赖。 阅读详情

相关推荐

SpringBoot整合WebSocket遇到的坑

websocket failed: Error during WebSocket handshake: Unexpected response 1、pom.xml 中引入 spring-boot-starter-websocket <dependency> <groupId>org.springframework.boot</groupId> ...

qq_30238195的博客 2380

【WEB篇】Spring Boot 整合 WebSocket 推送与接受消息

WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 通信协议于2011年被 IETF 定为标准 RFC 6455,并由 RFC7936 补充规范。WebSocket API 也被 W3C 定为标准。 WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 属性 属性 描述

csp732171109的博客 7073

springboot整合WebSocket

springboot整合WebSocket WebSocket通信过程 客户端构建一个websocket实例,并且为它绑定一个需要连接到的服务器地址,当客户端连接服务端的候,会向服务端发送一个http get报文,告诉服务端需要将通信协议切换到websocket,服务端收到http请求后将通信协议切换到websocket,同时发给客户端一个响应报文,返回的状态码为101,表示同意客户端协议转请求,并转换为websocket协议。以上过程都是利用http通信完成的,称之为websocket协议握手(webs

weixin_43757027的博客 2万+

SpringBoot 快速结合WebSocket的应用

【Spring Boot 实现 WebSocket实时数据推送-服务端】

ringBey的博客 515

SpringBoot 整合WebSocket 简单实战案例

先看项目目录结构: ------接下来,我们开始整合WebSocket------ 先是pom.xml添加依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket&lt...

默默不代表沉默 5万+

安卓ai自动化脚本 Yyds.Auto实现 示例 纯ai图像识别自动点击脚本

纯ai识别实现自动化脚本

专注安卓前沿科技 4780

Spring Boot中使用WebSocket总结:几种实现方式详解

简介 所谓WebSocket, 类似于Socket,它的作用是可以让Web应用中的客户端和服务端建立全双工通信。在基于Spring的应用中使用WebSocket一般可以有以下三种方式: 使用Java提供的@ServerEndpoint注解实现 使用Spring提供的低层级WebSocket API实现 使用STOMP消息实现 下面,我将对这三种实现方式做一个简单介绍。 使用Java提供的...

绝圣弃智-零的博客 5312

给排水工程师的SWMM初体验:从软件界面到第一个简单模型的保姆级上手教程

本文为给排水工程师提供SWMM软件的保姆级上手教程,从界面解析到创建第一个简单模型,详细介绍了SWMM的核心功能和操作步骤。通过30分钟的实践指导,帮助新手快速掌握雨水管网建模的基本技能,提升工作效率。

weixin_28736355的博客 323

springboot中使用websocket

WebSocket是一种网络协议,用于在客户端和服务器之间进行实时、双向的通信。它与传统的HTTP协议不同,HTTP协议是基于请求-响应模式的,即客户端发送请求,服务器返回响应,通信完成后连接断开。而WebSocket在建立连接后,可以保持长时间的连接,双方可以通过该连接进行实时的数据传输。下面是WebSocket的一些特点和工作原理:双向通信:WebSocket允许服务器主动向客户端发送数据,同时客户端也可以向服务器发送数据,实现了真正的双向通信。

weixin_44727769的博客 2420

Sentaurus TCAD学习——Scheme编程语言

sentaurus scheme语言学习记录

摸摸小熊猫的博客 964

医学图像配准实战:用Python实现MIND特征提取(附完整代码)

本文详细介绍了MIND(模态无关邻域描述符)在医学图像配准中的应用。通过Python和PyTorch实战,从原理到代码逐步解析了如何提取MIND特征,并利用其对结构而非灰度的感知能力,有效解决CT、MRI等多模态图像的对齐难题,为病灶追踪、手术导航等高级应用提供鲁棒性基础。

263

Spring Boot集成WebSocket以及基本使用

WebSocket是一种在Web浏览器和Web服务器之间建立实时双向通信的技术,它可以使客户端和服务器之间进行实时交互。

积跬步,至千里。 4544

Android7以上抓取https数据包-无需root

手机内装一个虚拟机,然后在虚拟机内运行我需要抓包的应用,该虚拟机内是不需要证书验证的。完美解决android7.0以上https无法抓包的问题。

qq_45764684的博客 1454

SpringBoot整合WebSocket服务 springboot整合websocket springboot使用websocket springboot使用websocket

仅使用 SpringBoot封装好的服务,并不是使用第三方Netty或者: 底层使用实现: 底层使用Netty实现(没有使用过,不知道具体)官方文档1官方文档2。

半只 7356

AI辅助需求分析与提示词生成

文章标题 《AI辅助需求分析与提示词生成》 关键词 人工智能 需求分析 提示词生成 深度学习 机器学习 强化学习 数学模型 系统架构

AI天才研究院 1212

Win11 系统下 VisualStudio2022 配置点云库 PCL1.11.1

安装完成之后打开文件夹E:\PCL 1.11.1\3rdParty\OpenNI2双击 并选择路径 (E:\PCL 1.11.1\3rdParty\OpenNI2) 安装即可全部安装完成之后,将pcl-1.11.1-pdb-msvc2019-win64.zip解压后的 .pdb文件拷贝到(E:\PCL 1.11.1\bin)中设置环境变量:到此,环境变量配置完成。

qq_53545309的博客 1126

【十四】springboot整合WebSocket

springboot整合WebSocket

weixin_56995925的博客 3万+

AutoClip AI视频剪辑工具:Docker一键部署指南

摘要:AutoClip是一个基于Docker容器化部署的智能视频剪辑系统,采用微服务架构设计,包含Web界面、后端API、异步任务处理和Redis缓存等组件。系统支持一键快速部署,提供完整的监控和日志功能,最低要求4GB内存和10GB存储空间。部署过程仅需三个步骤:克隆代码、配置环境变量、启动容器服务。生产环境支持性能调优、数据持久化和网络安全管理。该系统解决了环境配置难题,实现"一次配置,到处运行"的目标,适合需要自动化视频处理的用户。

wjianwei666的专栏 1004

Spring Boot整合WebSocket

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它允许客户端和服务器之间进行实时数据交换,而无需每次都重新建立连接。WebSocket 的核心特性包括:双向通信:客户端和服务器都可以主动发送和接收消息。低延迟:由于 WebSocket 连接是持久的,消息可以立即传递,而不需要重复的 HTTP 请求。节省资源:通过减少 HTTP 请求的开销,WebSocket 可以节省带宽和服务器资源。

2401_85454022的博客 2489

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SpringBoot 以及SpringCloud整合Websocket的经历

Springboot整合webSocket 导入依赖(根据具体情况,排除jar包,防止jar包冲突) <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId&g...

奋斗的清风~的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Springboot 整合 WebSocket

WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信,即允许服务器主动发送信息给客户端。因此,在WebSocket中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输,客户端和服务器之间的数据交换变得更加简单。

原名:@程序员大禹 9481

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Springboot整合websocket(附详细案例代码)

本文主要介绍WebSocket的概念,和在springboot项目中的使用。

weixin_46425661的博客 1万+

Springboot整合websocket

引入javax.websocket.api得到运用websocket,为什么要Springboot要整合websocket?在websocket运行于外部Tomcat时,当一对servlet访问,就产生了一个websocket实例,两两相对通讯,一个客户端一个服务端。经过这个发现,导致后面的代码要改,比如容器不能在这里面要么是静态!因为这是产生多例   在运行于外部Tomcat,一个访问一个实...

盗墓者 820
上一篇: 数据库事务隔离级别解析与验证
下一篇: No Dialect mapping for JDBC type: 1111
Absosba
博客等级 码龄11年 20粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值