最简单的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
的展示效果,有兴趣的可以关注一下。
余生还长,切勿惆怅
最简单的springboot整合websocket方式相关推荐
- SpringBoot 整合WebSocket 简单实战案例
前言 这个简单实战案例主要目的是让大家了解websocket的一些简单使用. 另外使用stomp方式的: <Springboot 整合 WebSocket ,使用STOMP协议 ,前后端整合实战 ...
- Springboot 整合 WebSocket ,使用STOMP协议+Redis 解决负载场景问题(二)
前言 上一篇,简单给大家整合了一下websocket,使用stomp方式. 这篇,就是考虑到单体的服务使用websocket ,按照上一篇的整合,确实没问题. 但是如果一旦是负载多台服务的时候,那么就 ...
- Springboot整合WebSocket(基于Stomp)
Springboot整合WebSocket(基于Stomp) 文章目录 Springboot整合WebSocket(基于Stomp) 参考链接 前言 STOMP 定义 STOMP Over WebSo ...
- Springboot整合Websocket遇到的坑_websocket session不支持序列化,无法存储至redis_Websocket相关问题总结(Session共享,用户多端登录等)
Springboot整合Websocket遇到的坑 一.使用Springboot内嵌的tomcat启动websocket 1.添加ServerEndpointExporter配置bean @Confi ...
- Springboot 整合Websocket+Stomp协议+RabbitMQ做消息代理 实例教程
前言 如果你还没有了解过websocket,关于整合websocket的简单入门使用,可以先看看我这篇: <SpringBoot 整合WebSocket 简单实战案例> https://b ...
- springboot整合websocket实现消息推送
springboot整合websocket 1.WebSocket介绍与原理 介绍:WebSocket是HTML5一种新的协议.它实现了浏览器与服务器全双工通信.一开始的握手需要借助HTTP请求完成. ...
- 在线聊天室的消息单聊的实现——springboot整合WebSocket(二)
一.声明 项目的搭建请大家移步到:在线聊天室的消息群聊的实现--springboot整合WebSocket(一) 单聊的实现是在群聊项目上进行延申改造的. 二.引入依赖 <dependency& ...
- SpringBoot整合websocket实现在线客服聊天
websocket最伟大之处在于服务器和客户端可以在给定的时间范围内的任意时刻,相互推送信息. 浏览器和服务器只需要要做一个握手的动作,在建立连接之后,服务器可以主动传送数据给客户端,客户端也可以随时 ...
- 【Spring Web教程】SpringBoot 整合WebSocket
概括 WebSocket是一种服务端和网页之间的通讯协议,服务端跟网页保持着长连接,可以达到服务端主动给网页发消息的功能. 常用场景:Web聊天室.通知和紧急告警.网页消息通信.物联网通讯. Spri ...
最新文章
- 原生、无依赖的web弹层组件——HLayer.js
- 前端每周清单半年盘点之 WebAssembly 篇
- 今天的工作发现了4年前的“bug一枚”
- 使用Nomad和OpenFaaS提供FaaS服务
- android开源项目框架大全:《IT蓝豹》
- Keras中文文档:图像预处理ImageDataGenerator 类详细学习记录
- Vue.js2.0从入门到放弃---入门实例(一)
- 轻快pdf阅读器 电子书阅读软件电脑版
- 一文教会你如何基于高德地图获取城市公交网络数据(包含经纬度)
- 《植物大战僵尸》游戏数据修改
- ios 高德挪动地图获取经纬度_iOS 高德地图 根据经纬度解析成位置
- 1433端口被运营商封锁的解决方法
- android关于无法debug
- 用C语言实现:输入某年某月某日,判断这一天是这一年的第几天
- 5分钟搞定内网穿透工具-ngrok
- iPad是真正的移动设备吗?
- VMware下Linux与Windows共享文件
- 会议panel是什么意思中文_医学术语中的panel到底是什么意思
- 前端之vue监测数据改变的原理
- Oracle LiveLabs实验:DB Security - Audit Vault and DB Firewall
热门文章
- Second season seventh episode,Ross finds out Rachel like him,what will he do???
- 国四网络工程笔记(究极错题)
- Python:Pygame的图形接口
- opencv-6-图像绘制与line 函数剖析
- android 代码 lut,Android基于Shader的图像处理(7)-颜色表LUT
- 基于Vector 的AUTOSAR NvM 模块使用
- 4. 上新了Spring,全新一代类型转换机制
- PLC计数器例子——3个计数器构成的24小时时钟
- Types of light 光照类型 光照系列4
- Unity经纬度相互转换(WGS-84、GCJ-02、BD-09)