Springboot整合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依赖。 阅读详情

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

 

在运行于外部Tomcat,一个访问一个实例服务,运行在Springboot内嵌Tomcat则不是这样了,访问不上,因为注册不进去。指的不上注入到Spring容器中,而是websocket服务注册不进去通过以前的方法。实例对象注解能注入,到websocket服务注册不到Tomcat容器中。就访问不上了,所以有整合一说,使用Springboot按约定进行整合开发。因为有依赖所以要整合,websocket依赖于web容器,而Springboot自己嵌容器,所以要进去就只有整合。如果无依赖Spring则注入与否都一样

 

jsp代码和之前的一样,通过url长时间连接服务器,进行通讯。页面代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script>
        var websocket;
        if ('WebSocket' in window) {
            websocket = new WebSocket("ws://localhost:8080/websocket/zhangsan");
        } else {
            console.log("不支持websocket");
        }
        window.onbeforeunload = function (ev) {
            console.log("准备关闭连接")
            websocket.close();
        }
        websocket.onmessage = function (ev) {
            console.log("收到服务器消息: " + ev.data)
        }
        websocket.onerror = function (ev) {
            console.log("出现异常")
        }
        websocket.onopen = function (ev) {
            console.log("连接建立成功")
        }
    </script>
</head>
<body>
<input type="text" name="">
<button id="clickEndpoint">发送消息</button>
</body>

<script>
    var v = document.getElementById("clickEndpoint");
    v.onclick = function (msg) {
        websocket.send("xixihaha");
    }
</script>

</html>

判断是否支持websocket,加载script时通过ws://url连接服务器,给window注册时间,点击按钮websocket对象.send发出信息

 

 

服务端:

@Configuration表示自己是个配置类,@EnableWebSocket将websocket的bean都管理进来。实现与websocketConfigurer接口。将重写方法registerWebSocketHandler是:注册websocket处理者。前面是处理者类,后面是websocket的服务名。

 

给注册处理类添加拦截器,这样将在进行websocket经过拦截器,当然拦截器可要可不要。如果有需求到可要要,我们这里为了拿到一点信息使用了拦截器

 

拦截器:

实现拦截器接口,将重写2方法,拦截前与拦截后方法,。从请求头获得url,得到/zhangsan,截取掉/,拿到参数的map,将截取的名字放进去,后面可要拿到这个map在websocket处理类中拦截器返回true表示继续往下调用,否则将原地停止

 

实现处理类,里面的方法与websocket类似,建立连接,存储在容器中。接收到消息调用Message方法,并得到websocketsession对象发送消息。这里是自己给自己发,也不打算去找谁去发送

 

发送异常以连接管理。都在重写方法内

 

通讯成功

 

使用websocket连接是建立了,但用户一刷新又是新连接这样也不合适,于是给用户打标识。关于如何调用到注解下的方法,工程收到别人的管理,他得到类的构造扫描类下的所有注解,符合就调用。如果他想在类的前与后做操作就产生代理。这两点做法是不一样的。一个是构造得到类的注解调用这些方法,一个是给类代理在类调用前后触发inkove不知不觉进行前与后操作

 

关于拦截器与过滤器,过滤器是符合过滤要求进入过滤器,可以选择往下调用,当掉完在回调到方法调用处。而拦截器是给类产生代理。在类的前后前后调用操作,调不调用你要掉的方法是随便

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

相关推荐

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

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

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

半只 7356

springboot整合WebSocket

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

weixin_43757027的博客 2万+

WebSocket的那些事(5-Spring STOMP支持之连接外部消息代理)

Data/*** 用户唯一ID*//*** 用户昵称*//*** 用于指定用户消息推送的标识* @return*/@Override@Slf4j@Override// 如果是连接请求,记录userId下一节我们将会详细说明RabbitMQ STOMP适配器支持的各种消息目的地类型的区别以及适用场景。

lingbomanbu_lyl的博客 2608

SpringBoot 整合WebSocket 简单实战案例

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

默默不代表沉默 5万+

测试人必看!正交表与Allpairs工具对比:如何选择最适合你的组合测试方案?

本文深入对比了正交表、PICT与Allpairs三种主流组合测试方案,帮助测试人员根据项目场景做出最佳选择。文章分析了各自的核心原理、优劣势及适用场景,特别强调了在涉及复杂约束时PICT工具的强大功能,并提供了从原理学习到CI/CD集成的实战选型指南。

weixin_29224309的博客 267

Spring Boot整合WebSocket

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

m0_74823452的博客 1255

5分钟搞定:用Pyannote和Whisper实现带说话人分离的语音转文字(附完整代码)

本文详细介绍了如何快速构建一个集成了说话人分离功能的语音转文字系统。通过结合OpenAI的Whisper模型进行高精度语音识别和Pyannote模型实现说话人分离,并提供了完整的代码实现、环境搭建指南以及核心的对齐与合并逻辑,帮助开发者高效处理会议录音、访谈等多说话人音频,实现自动化转录。

threejs5artist的博客 635

Springboot集成websocket

Springboot集成websocket

囚徒之困 9461

汽车电缆选型实战:基于ISO 19642-3~12的7类电缆电压/材料/场景对照表

本文详细解析了基于ISO 19642-3~12标准的7类汽车电缆选型实战,涵盖电压等级、导体材料和场景应用的对照表。通过全参数速查表和典型选型陷阱分析,帮助工程师快速掌握从低压信号线到高压动力电缆的选型逻辑,提升新能源汽车与智能驾驶技术的安全性和可靠性。

weixin_29043895的博客 366

雷达信号处理——恒虚警检测(CFAR)

上图展示的是同时在距离维和多普勒维进行恒虚警检测的原理,如果只是在距离维或多普勒维做CFAR,检测单元的左右两侧均有设定好数量的保护单元和参考单元。不同的CFAR检测器适用于不同的场景,CA-CFAR算法适用于均匀环境中的单目标或彼此相距较远的多目标环境,在邻近多目标环境会发生目标的遮蔽效应,在杂波边缘会发生杂波边缘效应。从图中也可以看到,根据阈值的选择不同,有不同的检测器,其中CA-CFAR是取的参考单元的均值,SO-CFAR取的是参考单元的最小值,而GO-CFAR是取的参考单元的最大值。

诚朴勇毅 3万+

【十四】springboot整合WebSocket

springboot整合WebSocket

weixin_56995925的博客 3万+

物联网组网技术优缺点对比:蓝牙、LoRa、wifi、NB-IoT、ZigBee等

1.前言 最近对物联网产品自组网技术选型,找到合适的组网技术,让产品自行组网并完成数据的传输。 2.参数对比

谁念西风独自凉 4万+

SpringBoot 以及SpringCloud整合Websocket的经历

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

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

一文搞懂【Linux 搭建 Dread Hunger 服务器】附本体及Docker部署集群方案

看直播发现了五花八门的开服器和版本,一时兴起按官方文档进行了搭建尝试,所以我的版本基于官方Stream2024.01.10更新的版本,也就是停服时的玩法,应该可以根据mod和补丁魔改成更那些开服器一样的版本,本文不做谈论,注重服务器搭建,毕竟8个人不可能在一个局域网里乱象:首先,我看了大量教程视频,一类是开服器的推广,另一类自建的基本采用Windows搭建,我觉得最离谱的是大部分教程都会教你买一台远程Windows虚拟机???

LHmine的博客 3986

基于卷积神经网络的球罐结构损伤识别

球罐结构损伤识别方法研究 摘要:本研究针对球形储罐(球罐)结构健康监测需求,提出基于卷积神经网络(CNN)的损伤识别方法。通过ANSYS有限元仿真构建包含5种裂纹深度的500组振动信号数据集,设计包含卷积层、池化层和全连接层的CNN网络架构。实验结果表明,该方法在训练集和测试集上分别达到98.4%和96.0%的准确率,验证了其在球罐焊缝损伤识别中的有效性。研究提供了完整的MATLAB实现代码,为球罐结构智能化监测提供了技术参考。 关键词:球罐结构;卷积神经网络;损伤识别;振动信号;深度学习

AI的内部世界的博客 120

Springboot 整合 WebSocket

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

原名:@程序员大禹 9481

28、时间敏感网络中可靠性感知的综合路由与调度

本文针对时间敏感网络(TSN)中现有路由与调度机制主要关注时间触发(TT)流量而忽略其他类型流量效用的问题,提出了一种可靠性感知的综合路由与调度机制。通过将具有不同可靠性和延迟要求的各类流量的联合路由与调度问题形式化为基于优化模理论(OMT)的混合整数规划问题,设计了完整的路由约束与调度约束,并分析了不同类型流量的传输效用,设定了优化目标以提升整体网络性能。实验结果表明,该机制在满足TT流量严格时延与可靠性要求的同时,显著提高了AVB和BE等非关键流量的传输效用,实现了多类型流量的高效协同传输。

hhh00的博客 95

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

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

weixin_46425661的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

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

springboot整合websocket的总结

springboot整合websocket的总结 今天总结一下以往使用的websocket的两种方式 |第一种: 导入依赖 &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.springframework.boot&amp;amp;lt;/groupId&amp;amp;gt; &amp;amp;lt;artifactId&amp;amp;gt;s

海棠花未眠的博客 4894

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

springBoot 整合WebSocket

1、pom文件,添加一个依赖即可 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> 2、...

wjlzx的博客 299

Springboot整合Websocket

WebSocket是一种基于TCP协议的双向通信协议,可以在客户端和服务器之间建立持久连接,并通过这个连接实现实时的双向通信。相对于HTTP协议,WebSocket协议具有更低的延迟和更高的带宽利用率,适用于实时通信、游戏、视频流等场景。

weixin_43830765的博客 1282

springboot整合websocket

通过以上步骤,Spring Boot 即可快速整合 WebSocket,实现实时通信功能。根据需求选择原生 WebSocket 或 STOMP 协议扩展功能。

qq_57756904的博客 954
上一篇: websocket
下一篇: webservice
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值