位置: 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参数(小米10pro参数)

    小米10参数(小米10pro参数)

  • 苹果电池用量不统计了(苹果电池用量不足)

    苹果电池用量不统计了(苹果电池用量不足)

  • 快手私信不能发微信号吗(快手私信不能发照片怎么回事)

    快手私信不能发微信号吗(快手私信不能发照片怎么回事)

  • 小米以旧换新是先给旧手机吗(小米以旧换新是新机吗)

    小米以旧换新是先给旧手机吗(小米以旧换新是新机吗)

  • 苹果手机拍的照片为什么会动(苹果手机拍的照片为什么会动一下)

    苹果手机拍的照片为什么会动(苹果手机拍的照片为什么会动一下)

  • qq异常怎么解除(qq异常)

    qq异常怎么解除(qq异常)

  • 苹果7下载不了软件怎么回事(苹果7下载不了app怎么办)

    苹果7下载不了软件怎么回事(苹果7下载不了app怎么办)

  • 组织结构设计的影响因素(组织结构设计的关键要素包括)

    组织结构设计的影响因素(组织结构设计的关键要素包括)

  • 华为充电口叫什么名字(华为充电口叫什么怎么读)

    华为充电口叫什么名字(华为充电口叫什么怎么读)

  • 手机双模和单模的区别(手机双模和单模有什么区别)

    手机双模和单模的区别(手机双模和单模有什么区别)

  • 抖音怎么评论图片(抖音怎么评论图片不发作品)

    抖音怎么评论图片(抖音怎么评论图片不发作品)

  • 爱奇艺清晰度在哪找(爱奇艺视频清晰度)

    爱奇艺清晰度在哪找(爱奇艺视频清晰度)

  • 好省新人没有邀请口令怎么办(好省邀请了人为什么无效)

    好省新人没有邀请口令怎么办(好省邀请了人为什么无效)

  • 三星手机应用分身在哪(三星手机应用分身微信)

    三星手机应用分身在哪(三星手机应用分身微信)

  • iphone7能更新ios13吗(iphone7能更新ios15.7吗)

    iphone7能更新ios13吗(iphone7能更新ios15.7吗)

  • 无u盘怎么进入pe系统(没有u盘怎么进入pe系统win10)

    无u盘怎么进入pe系统(没有u盘怎么进入pe系统win10)

  • tendawifi怎么重新设置(tenda路由器重新设置)

    tendawifi怎么重新设置(tenda路由器重新设置)

  • 苹果xr定位不准确怎么调(苹果xr为什么定位不准确)

    苹果xr定位不准确怎么调(苹果xr为什么定位不准确)

  • 网络dns是什么意思(网络中dns是什么意思)

    网络dns是什么意思(网络中dns是什么意思)

  • 笔记本很卡清灰管用吗(笔记本很卡清灰没反应)

    笔记本很卡清灰管用吗(笔记本很卡清灰没反应)

  • vivo浏览器缓存的视频在哪里(vivo浏览器缓存视频恢复)

    vivo浏览器缓存的视频在哪里(vivo浏览器缓存视频恢复)

  • 苹果Mac系统锁屏不待机效果设置方法介绍(mac锁屏屏保)

    苹果Mac系统锁屏不待机效果设置方法介绍(mac锁屏屏保)

  • 黄石国家公园的美洲野牛,美国怀俄明州 (© Gerald Corsi/Getty Images)(黄石国家公园的英文翻译)

    黄石国家公园的美洲野牛,美国怀俄明州 (© Gerald Corsi/Getty Images)(黄石国家公园的英文翻译)

  • PHPCMS 扩展在哪里(phpcms添加内容)

    PHPCMS 扩展在哪里(phpcms添加内容)

  • 息税前利润的计算公式EBIT
  • 核定征收的计算方法有哪些
  • 企业所得税视同销售的会计处理
  • 合同负债属于负债吗
  • 税控盘技术维护费申报时候怎么填报
  • 人力资源公司开办条件
  • 申报后发现成本算错了
  • 预授权撤销怎么撤销
  • 2019年所得税汇算清缴政策
  • 接受原材料投资的会计处理
  • 人防工程被出售,谁承担责任
  • 非独立核算分公司企业所得税
  • 无形资产出租后还要摊销吗
  • 不能抵扣的进项发票怎么做分录
  • 计提成本会计分录怎么做
  • 现金支付可以报销吗
  • 超限量领购发票审批通过后
  • 营改增工程计价规则
  • 汇总缴纳增值税如何申报
  • 个税个人所得税返回
  • 关于两套账老板和会计须知的4个点
  • 银行存款缴税
  • 中央下拨党费
  • 员工的水电费计入什么科目
  • 子公司借款给母公司是否受2:1
  • 服务费计入什么收入
  • 个税缴纳期数填1是什么意思
  • 发票有几个
  • 对赌协议的账务处理流程
  • bioss设置
  • 主体有哪些
  • 应收账款期末怎么算
  • 政府会计的记账基础是什么?
  • 高新企业收到政府补贴
  • 建设工程招标办
  • win10系统关机后自动开机怎么办
  • 商业一般纳税人标准
  • 公允价值的利弊
  • 如何分清福利性劳动
  • 张家界天门山介绍简介
  • 潜水时看到的鱼
  • 块元素和行内元素区别
  • 侧边导航栏点击后再展开
  • .net core中间件原理
  • 生产加工型企业需要办理哪些
  • 其他应收款待抵扣进项
  • 企业纳税人应缴的税额
  • Mysql半同步复制原理及问题排查
  • 生产车间发生的固定资产租赁费用属于直接费用
  • 员工预支款项及报销流程
  • 收入重复开票跨年了怎么处理
  • 其他应收款如何平账
  • 商场收取租金如何入账
  • 房产税从何时计算缴纳
  • 期权分为哪几种
  • 工会会员缴纳的医疗互助金列工会什么科目
  • 记账错误是什么意思
  • 分配现金股利如何做会计分录
  • 小额贷款在银行需要什么条件
  • 事业单位如何计算退休工资
  • 固定资产后续支出计入的科目
  • 养老保险 退钱
  • 应付账款和预付账款都属于负债类科目
  • 减免税款月末是否结平
  • 租入固定资产改良支出属于收益性支出吗
  • Mysql优化sql方案
  • windows xp打开服务
  • centos7 cp
  • win7无权关闭计算机
  • linux安装迅雷
  • win10怎么快一点
  • javascript数据结构与算法
  • cocos2dx3.2 xcode中资源路径设置问题
  • 广东发票查询真伪网站
  • 国家税务局申报系统操作步骤说明在哪里看
  • 农村饮水扶持资金申请报告
  • 下列关于消费税委托加工说法正确的是
  • 云南省地方税务局官网
  • 外籍人个人所得税汇算清缴流程
  • 银行前置利息什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设