位置: 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重点知识总结)

  • 小米10和华为nova8的区别有哪些(小米10和华为nova7哪个好)

    小米10和华为nova8的区别有哪些(小米10和华为nova7哪个好)

  • 抖音收藏别人视频别人能不能看得到吗(抖音收藏别人视频发的宽度没那么大呢)

    抖音收藏别人视频别人能不能看得到吗(抖音收藏别人视频发的宽度没那么大呢)

  • reste键什么意思(resert键在哪里)

    reste键什么意思(resert键在哪里)

  • qq单删好友对方还有吗(qq单删好友对方列表还有吗)

    qq单删好友对方还有吗(qq单删好友对方列表还有吗)

  • 华为p40指纹位置(华为p40指纹位置怎么设置)

    华为p40指纹位置(华为p40指纹位置怎么设置)

  • 迈外迪wifi是免费的吗(迈外迪路由器设置教程)

    迈外迪wifi是免费的吗(迈外迪路由器设置教程)

  • 抖音流量上不去是什么原因(抖音流量上不去需要养号吗)

    抖音流量上不去是什么原因(抖音流量上不去需要养号吗)

  • 局域网的通信硬件设备主要包括(局域网的通信硬件设备)

    局域网的通信硬件设备主要包括(局域网的通信硬件设备)

  • 18瓦快充是多少安(18瓦快充是多少瓦)

    18瓦快充是多少安(18瓦快充是多少瓦)

  • 荣耀magic2屏幕刷新率(荣耀magic2屏幕刷新率怎么调)

    荣耀magic2屏幕刷新率(荣耀magic2屏幕刷新率怎么调)

  • 显示hd是什么意思(显示hd是什么意思怎么关掉)

    显示hd是什么意思(显示hd是什么意思怎么关掉)

  • 苹果x可以快充吗(苹果x可以快充20w)

    苹果x可以快充吗(苹果x可以快充20w)

  • 三星折叠手机是双卡双待吗(三星折叠手机是单卡吗)

    三星折叠手机是双卡双待吗(三星折叠手机是单卡吗)

  • 华为手机删掉的短信能查到吗(华为手机删掉的照片能找回来吗)

    华为手机删掉的短信能查到吗(华为手机删掉的照片能找回来吗)

  • 华为被刷机还能定位嘛(华为刷机还能找回吗)

    华为被刷机还能定位嘛(华为刷机还能找回吗)

  • iphone11慢充需要多久(苹果11慢充耐用么)

    iphone11慢充需要多久(苹果11慢充耐用么)

  • 手机计步是什么原理(手机计步是什么原理,怎么更精确)

    手机计步是什么原理(手机计步是什么原理,怎么更精确)

  • oppoa73怎样导入联系人(oppo手机导入)

    oppoa73怎样导入联系人(oppo手机导入)

  • 痞子是什么意思(文学痞子是什么意思)

    痞子是什么意思(文学痞子是什么意思)

  • 爱奇艺为什么突然没有字幕了(爱奇艺为什么突然没有弹幕了)

    爱奇艺为什么突然没有字幕了(爱奇艺为什么突然没有弹幕了)

  • 天猫精灵可以控制小米电视吗(天猫精灵可以控制哪些家电)

    天猫精灵可以控制小米电视吗(天猫精灵可以控制哪些家电)

  • 在win7中,为什么开机需要按F1进入系统?(win7为什么这么多人用)

    在win7中,为什么开机需要按F1进入系统?(win7为什么这么多人用)

  • discuz如何删除forum.php(discuz去除底部)

    discuz如何删除forum.php(discuz去除底部)

  • 未取得房屋产权证租赁
  • 资产负债表的其他流动资产包括哪些
  • 有限责任公司需要几个股东
  • 绿化税票多少税率
  • 出口未报关收到外汇怎样处理
  • 投资性房地产转为非投资性房地产
  • 平价转让股权如何交税
  • 上市公司存货跌价准备怎么看
  • 可抵扣租赁费如何摊销做会计分录呢?
  • 租金收入摊销
  • 营改增的范围包括
  • 税率调整之后税额的差异
  • 固定资产房屋原值增加折旧月数怎么算
  • 未安装使用
  • 补交企业所得税怎么填申报表
  • 运输增值税专票含税价怎么算
  • 农产品收购发票怎么抵扣
  • 置换补贴款
  • 委托代销商品委托方发出商品的分录
  • 不动产进项税额怎么算
  • 以前年度未申报的专项附加扣除
  • 劳务合同如何缴纳社保
  • windows无法配置用户文件
  • 怎么做年终结算工资
  • 存货 计价
  • 资产负债表的编制方法和步骤
  • 库存股会计处理 会计视野
  • 企业所得税税金及附加包括
  • 村集体经济组织架构
  • 企业股股票
  • 制造费用的归集
  • vue组件入门
  • php微信公众号 全站模板
  • 内部结算属于什么科目类别
  • return函数
  • 购买的服务怎么做账
  • 纳税申报和账务不一致
  • 实缴的钱注销后可以拿回来吗
  • 税务文书送达期限是多少天
  • 填写蓝字专用发票信息
  • php5.2漏洞
  • 现金发放工资会扣税吗
  • 增值税发票认证期限最新规定
  • 税务异常怎么处理要多长时间
  • 医疗服务增值税税率
  • mysql的左右连接
  • 转让财产损失是什么科目
  • 差额征税指的是什么税种
  • 销售退回会计分录
  • 工商年报中纳税总额怎么填
  • 开票航天信息要交年费吗
  • 收到在建工程会计分录
  • 旅行社差额征收税率多少
  • 一般纳税人购入固定资产进项抵扣
  • 怎么把应付账款调成应收
  • 打印银行电子流水发到别人邮箱,能看到我的账户余额吗
  • 常见开具发票错误详解是?
  • 待处理财产损益是备抵类科目吗
  • 如何查询公司经营异常
  • Linux下MySQL 5.5/5.6的修改字符集编码为UTF8的方法
  • linux系统的电脑如何共享
  • mac笔记软件推荐
  • centos6.5安装步骤
  • 怎么用macbook
  • windows8快速启动设置
  • xp系统怎么打开启动项
  • centos支持中文
  • kpg是什么文件
  • windows7的开机启动项在哪里
  • dos批处理命令大全
  • node.js连接mysql的数据怎么可视化
  • javascript中new Array()和var arr=[]用法区别
  • Node.js中的全局变量有哪些
  • 基于javascript的论文题目
  • unity官方插件
  • android设计模式与最佳实践 电子版
  • 税务局稽查科是干什么的工作
  • 境外取得收入申报期限
  • 无锡城市生活垃圾处理费
  • 纪检组长如何监督党员
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设