最简单的springboot整合websocket方式

简介

WebSocket是一种与HTTP不同的协议。两者都位于OSI模型的应用层,并且都依赖于传输层的TCP协议。 虽然它们不同,但是RFC 6455中规定:it is designed to work over HTTP ports 80 and 443 as well as to support HTTP proxies and intermediaries(WebSocket通过HTTP端口80和443进行工作,并支持HTTP代理和中介),从而使其与HTTP协议兼容。 为了实现兼容性,WebSocket握手使用HTTP Upgrade头[1]从HTTP协议更改为WebSocket协议。

WebSocket协议支持Web浏览器(或其他客户端应用程序)与Web服务器之间的交互,具有较低的开销,便于实现客户端与服务器的实时数据传输。 服务器可以通过标准化的方式来实现,而无需客户端首先请求内容,并允许消息在保持连接打开的同时来回传递。通过这种方式,可以在客户端和服务器之间进行双向持续对话。 通信通过TCP端口80或443完成,这在防火墙阻止非Web网络连接的环境下是有益的。另外,Comet之类的技术以非标准化的方式实现了类似的双向通信。

大多数浏览器都支持该协议,包括Google Chrome、Firefox、Safari、Microsoft Edge、Internet Explorer和Opera。

与HTTP不同,WebSocket提供全双工通信。[2][3]此外,WebSocket还可以在TCP之上实现消息流。TCP单独处理字节流,没有固有的消息概念。 在WebSocket之前,使用Comet可以实现全双工通信。但是Comet存在TCP握手和HTTP头的开销,因此对于小消息来说效率很低。WebSocket协议旨在解决这些问题。
在这里插入图片描述

WebSocket协议规范将ws(WebSocket)和wss(WebSocket Secure)定义为两个新的统一资源标识符(URI)方案[4],分别对应明文和加密连接。除了方案名称和片段ID(不支持#)之外,其余的URI组件都被定义为此URI的通用语法。[5]

使用浏览器开发人员工具,开发人员可以检查WebSocket握手以及WebSocket框架


实现

先看一下demo结构图如下,非常清晰简单,controller包跟websocket没有关系可以忽略在这里插入图片描述

实现步骤

  • 添加pom依赖
  • 新增websocket包(保证springboot自动扫包可以扫得到)
  • 添加对应的bean配置文件

是的你没有看错,仅需三步就可以实现springboot整合websocket。lz使用的方式是通过NettyServerContainer变成单例对象,然后在类进行初始化构造的时候启动WebSocketServer,从而实现项目启动的同时websocket也启动的效果。重要位置例如创建连接和销毁连接时都有对应日志,方便大家查找和实现自己的业务逻辑,本篇文章不放代码,只展示demo的效果,有兴趣的可以自己实现。

demo下载地址,由于电脑登录的是公司账号git,换来换去比较麻烦所以传到百度网盘上,凑合着看看吧
链接:https://pan.baidu.com/s/1-Uew-LL2G7Mge6L4_vpL6Q
提取码:vs68

demo演示

启动

启动完成会有websocket的启动日志以及netty的连接端口日志信息,有需要的可以自定义端口
在这里插入图片描述

测试连接

在线测试地址:WebSocket在线测试工具

  • 输入连接地址:ws://127.0.0.1:3333 ,点击开始连接
    在这里插入图片描述
  • 点击开启连接后后台打印连接信息日志
    在这里插入图片描述

在这里插入图片描述

  • 发送消息给服务端,会回复发送的消息并且附带当前服务器时间信息
    在这里插入图片描述
    在这里插入图片描述
    测试完成

结束语

实际上很早之前lz就是用websocket实现过在线客服的功能,但是最近打算实现一个动态日志的效果,类似于服务端的tail -fn 的展示效果,有兴趣的可以关注一下。

余生还长,切勿惆怅

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一米阳光zw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值