位置: IT常识 - 正文

SpringBoot整合WebSocket实现后端向前端发送消息(springboot整合websocket怎么接受图片消息)

编辑:rootadmin
SpringBoot整合WebSocket实现后端向前端发送消息

目录

一、什么是 websocket 接口

二、适用场景

三、示例代码

3.1、添加pom.xml依赖

3.2、创建WebSokcet配置类

3.3、创建测试发送消息接口

3.4、测试webSocket(http://www.jsons.cn/websocket/)


一、什么是 websocket 接口

推荐整理分享SpringBoot整合WebSocket实现后端向前端发送消息(springboot整合websocket怎么接受图片消息),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:springboot整合websocket netty,springboot整合websocket netty,springboot整合websocket推送,springboot整合websocket原理,springboot整合websocket一篇,springboot整合websocket一篇,springboot整合websocket一篇,springboot整合websocket怎么接受图片消息,内容如对您有帮助,希望把文章链接给更多的朋友!

使用 websocket 建立长连接,服务端和客户端可以互相通信,服务端只要有数据更新,就可以主动推给客户端。

SpringBoot整合WebSocket实现后端向前端发送消息(springboot整合websocket怎么接受图片消息)

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

二、适用场景

在业务开发过程中碰到一些异步处理(微信支付、支付宝支付的支付通知),跨应用的消息传递。

当业务执行完毕后,需要将成功的信息投递给前端。一般情况下都是前端调用后端的http/https接口获取数据,后端想要主动推送消息给前端就需要使用到WebSocket进行前后端的通信。

三、示例代码3.1、添加pom.xml依赖<!-- websocket--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId></dependency>3.2、创建WebSokcet配置类@Configurationpublic class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter(){ return new ServerEndpointExporter(); }}3.3、创建WebSokcet工具类@ServerEndpoint(value = "/websocket")@Componentpublic class WebSocketServer { private final static Logger log = LoggerFactory.getLogger(WebSocketServer.class); //静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。 private static int onlineCount = 0; //concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。 private static CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOnWriteArraySet<WebSocketServer>(); //与某个客户端的连接会话,需要通过它来给客户端发送数据 private Session session; /** * 连接建立成功调用的方法 */ @OnOpen public void onOpen(Session session) { this.session = session; //加入set中 webSocketSet.add(this); //在线数加1 addOnlineCount(); log.info("有新连接加入!当前在线人数为" + getOnlineCount()); try { MsgResponseVo userMsgResponseVo = new MsgResponseVo(); userMsgResponseVo.setMsg("SUCCESS"); WebSocketServer.sendInfo(JSON.toJSONString(userMsgResponseVo)); } catch (IOException e) { log.error("websocket IO异常"); } } /** * 连接关闭调用的方法 */ @OnClose public void onClose() { //从set中删除 webSocketSet.remove(this); //在线数减1 subOnlineCount(); log.info("有一连接关闭!当前在线人数为" + getOnlineCount()); } /** * 收到客户端消息后调用的方法 * * @param message 客户端发送过来的消息 */ @OnMessage public void onMessage(String message, Session session) { log.info("来自客户端的消息:" + message); //群发消息 for (WebSocketServer item : webSocketSet) { try { item.sendMessage(message); } catch (IOException e) { e.printStackTrace(); } } } /** * @param session * @param error */ @OnError public void onError(Session session, Throwable error) { log.error("发生错误"); error.printStackTrace(); } public void sendMessage(String message) throws IOException { this.session.getBasicRemote().sendText(message); } /** * 群发自定义消息 */ public static void sendInfo(String message) throws IOException { log.info(message); for (WebSocketServer item : webSocketSet) { try { item.sendMessage(message); } catch (IOException e) { continue; } } } public static synchronized int getOnlineCount() { return onlineCount; } public static synchronized void addOnlineCount() { WebSocketServer.onlineCount++; } public static synchronized void subOnlineCount() { WebSocketServer.onlineCount--; }}3.3、创建测试发送消息接口 @GetMapping("/testWebSocket") public ApiRestResponse testWebSocket() throws IOException {        //消息体 MsgResponseVo technicianMsgResponseVo = new MsgResponseVo(); technicianMsgResponseVo.setRole("Technician"); technicianMsgResponseVo.setRoleId(1); technicianMsgResponseVo.setMsg("您的订单已取消"); technicianMsgResponseVo.setMsgStatus("CANCEL_ORDER"); technicianMsgResponseVo.setOrderNo("test");        //发送消息 WebSocketServer.sendInfo(JSON.toJSONString(technicianMsgResponseVo)); return ApiRestResponse.success(); }}3.4、测试webSocket(http://www.jsons.cn/websocket/)

在网站中输入ws://ip:端口/webSocket工具类的前缀(ws://127.0.0.1:8080/websocket)

3.5、前端使用WebSocket监听后端WebSocket地址 ,接收到消息后做下一步业务处理。

本文链接地址:https://www.jiuchutong.com/zhishi/300279.html 转载请保留说明!

上一篇:ajax请求携带自定义请求头header(跨域和同域)($ajax请求)

下一篇:【JavaWeb】复习重点内容(javaweb重点知识总结)

  • 人力社保app怎么查询缴费记录(人力社保app怎么查询余额)

    人力社保app怎么查询缴费记录(人力社保app怎么查询余额)

  • 怎么设置抖音自己喜欢的别人看不到(怎么设置抖音自己滑动视频)

    怎么设置抖音自己喜欢的别人看不到(怎么设置抖音自己滑动视频)

  • iphone11刷新率(iphone11刷新率在哪调)

    iphone11刷新率(iphone11刷新率在哪调)

  • 摄像头升起受阻怎么办(honor9x摄像头升起受阻)

    摄像头升起受阻怎么办(honor9x摄像头升起受阻)

  • 四g手机可以升级五g吗(四g手机可以升五g网络吗)

    四g手机可以升级五g吗(四g手机可以升五g网络吗)

  • win10右下角盾牌不见了(win10右下角盾牌红叉什么意思)

    win10右下角盾牌不见了(win10右下角盾牌红叉什么意思)

  • 华为p40微信视频带美颜吗(华为p40微信视频聊天怎么设置美颜功能)

    华为p40微信视频带美颜吗(华为p40微信视频聊天怎么设置美颜功能)

  • wordexcel属于什么软件(wordexcel属于什么软件图片)

    wordexcel属于什么软件(wordexcel属于什么软件图片)

  • 照片hdr是什么意思(照片中hdr)

    照片hdr是什么意思(照片中hdr)

  • opporeno2背面圆点干嘛的(opporenoz背后的小圆点)

    opporeno2背面圆点干嘛的(opporenoz背后的小圆点)

  • 无法获取未定义或null引用的属性(无法获取未定义或null的属性)

    无法获取未定义或null引用的属性(无法获取未定义或null的属性)

  • oppo远程守护怎么显示不了对方地理位置(oppo远程守护怎么突然没有了)

    oppo远程守护怎么显示不了对方地理位置(oppo远程守护怎么突然没有了)

  • 淘宝标品和非标品是什么意思(淘宝标品和非标品怎么入手)

    淘宝标品和非标品是什么意思(淘宝标品和非标品怎么入手)

  • 华为畅享9支持nfc吗(华为畅享9支持NFC吗)

    华为畅享9支持nfc吗(华为畅享9支持NFC吗)

  • 韩剧tv怎么换储存路线(韩剧tv怎么换储存位置)

    韩剧tv怎么换储存路线(韩剧tv怎么换储存位置)

  • 手机号如何找回(网易手机号如何找回)

    手机号如何找回(网易手机号如何找回)

  • 华为nova4跟4e有什么区别(华为nova4与4e参数对比)

    华为nova4跟4e有什么区别(华为nova4与4e参数对比)

  • oppo手机的手电筒打不开了怎么办(oppo手机的手电筒在哪里设置)

    oppo手机的手电筒打不开了怎么办(oppo手机的手电筒在哪里设置)

  • iphonex怎样正确充电(苹果x操作技巧)

    iphonex怎样正确充电(苹果x操作技巧)

  • 三方视频怎么操作(三方视频是什么)

    三方视频怎么操作(三方视频是什么)

  • 关于BIOS的入口地址0xFFFF0的介绍(bios设置的完整说法)

    关于BIOS的入口地址0xFFFF0的介绍(bios设置的完整说法)

  • 移动网速测试怎么测?(移动网速测试软件)

    移动网速测试怎么测?(移动网速测试软件)

  • Fdisk硬盘分区图文教程(超详细)(fdisk分区工具怎么用)

    Fdisk硬盘分区图文教程(超详细)(fdisk分区工具怎么用)

  • 关联方的借款用什么科目核算
  • 一般纳税人的认定时间
  • 银行存款余额调节表编制
  • 待抵扣进项税额转出会计分录
  • 绿化工程账务处理支出
  • 员工造成损失怎么处理
  • 企业租赁集体土地种植经济林如何补偿
  • 支付股权投资的会计科目
  • 无形资产除了专利还有什么
  • 厂房转让企业所得税计算方法
  • 公司报销学费属于 薪酬还是福利呢
  • 营业账簿印花税包括什么
  • 个体经营户如何开电子发票
  • 替票和代票的区别是什么
  • 城市建设维护税怎么计算
  • 毛利润率的计算公式举例
  • 的税收分类编码
  • 工商年报员工人数怎么算
  • 消防改造费用
  • 工程劳务公司的生产销售情况分析
  • 应收账款核销会计处理
  • 个体户税务申报流程季度0申报
  • 销售电梯并安装如何缴纳增值税
  • 跨月退款会计分录
  • 累计摊销在资产里怎么算
  • macqq怎么查看删除好友
  • 异常发票怎么处理
  • 支付给代理机构的手续费
  • PHP:Memcached::getMultiByKey()的用法_Memcached类
  • .exe是什么文件
  • 工程施工广告牌
  • macos big sur值得升级吗
  • 两台电脑文件共享,显示没有访问权限
  • apache安装与配置windows
  • php从哪里开始学
  • php模板引擎有哪些
  • 奥杜邦的祈祷经典语录
  • 图像识别算法汇总表
  • 你还没等于几
  • php 微信公众号自定义菜单
  • 重复上次命令
  • 固定资产改造替换
  • swoole扩展安装
  • 发票作废冲红怎么做账
  • 购入固定资产怎么做账务处理
  • 红字发票开错了是可以作废的吗?
  • 销售原材料的差价怎么算
  • 税控系统技术维护费的申报抵扣方法
  • 合并财务报表内部交易抵消顺流和逆流
  • 物业公司代收代缴水电费
  • 信息服务的最终目的是什么
  • 社保年度汇算清缴怎么做
  • 个人独资企业的投资人以其个人财产对企业债务承担
  • mysql数据库高可用架构
  • 通过备份记录获取文件
  • Windows Server 2008如何设置自动获取ip?设置自动获取ip教程
  • skydrive pro
  • win8.1系统升级win10
  • 台式电脑NUM LOCK键还能亮,算不算死机了
  • centos6安装yum源
  • win7快速安装
  • 没有推送windows11
  • win8系统切换桌面
  • xp系统快捷启动按哪个
  • quick3.3 UIListview扩展应用
  • 对用药方案做合理性评估时
  • jquery validate.js表单验证入门实例(附源码)
  • 一键清除照片上多余的人
  • Android Studio Attach source code
  • unity2d的小游戏
  • ajax请求传参
  • 扩展坞哪个牌子比较好
  • unity3ds
  • JavaScript中的this指向
  • python怎么将数据存到数据库
  • python截屏幕的图
  • 辽宁省国税局网站
  • 小规模增值税怎么计提
  • 拆迁户契税减免政策去哪里办理
  • 进出口货物的报关时限
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设