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

  • 英特尔第 14 代 Meteor Lake-P 移动 CPU评测(英特尔第一代14纳米)

    英特尔第 14 代 Meteor Lake-P 移动 CPU评测(英特尔第一代14纳米)

  • 闲鱼发布地址怎么修改(闲鱼发布地址怎么关闭)

    闲鱼发布地址怎么修改(闲鱼发布地址怎么关闭)

  • qq怎么共享屏幕(qq怎么共享屏幕声音)

    qq怎么共享屏幕(qq怎么共享屏幕声音)

  • 黑名单管理支持批量号码设置是什么意思(黑名单管理支持哪些设备)

    黑名单管理支持批量号码设置是什么意思(黑名单管理支持哪些设备)

  • 改密保手机必须等12小时吗(改密保手机必须关机吗)

    改密保手机必须等12小时吗(改密保手机必须关机吗)

  • 知乎提问审核多久(知乎的提问要审核多久)

    知乎提问审核多久(知乎的提问要审核多久)

  • 苹果八什么时候上市的(苹果八什么时候出来的多少钱)

    苹果八什么时候上市的(苹果八什么时候出来的多少钱)

  • 芒果tv签到21天为什么没有会员(芒果tv签到21天领不了会员)

    芒果tv签到21天为什么没有会员(芒果tv签到21天领不了会员)

  • 嘀嗒顺风车为什么没人接单(嘀嗒顺风车为什么看不到行车轨迹)

    嘀嗒顺风车为什么没人接单(嘀嗒顺风车为什么看不到行车轨迹)

  • 苹果相机兼容性和高效区别(苹果相机兼容性和高效)

    苹果相机兼容性和高效区别(苹果相机兼容性和高效)

  • 苹果备份微信聊天记录还在吗(苹果备份微信聊天记录软件)

    苹果备份微信聊天记录还在吗(苹果备份微信聊天记录软件)

  • 网络slp是什么意思(网络上slp是什么意思)

    网络slp是什么意思(网络上slp是什么意思)

  • b站怎么注销手机号(b站怎么注销手机号绑定)

    b站怎么注销手机号(b站怎么注销手机号绑定)

  • ipad支持内存卡吗(ipad支持内存卡扩展吗)

    ipad支持内存卡吗(ipad支持内存卡扩展吗)

  • 计算机的发展阶段按什么划分(计算机的发展阶段主要是以( )来划分的)

    计算机的发展阶段按什么划分(计算机的发展阶段主要是以( )来划分的)

  • 华为手表和荣耀手表的区别是什么(华为手表和荣耀手机能匹配吗)

    华为手表和荣耀手表的区别是什么(华为手表和荣耀手机能匹配吗)

  • 系统bug是什么意思(系统bug了)

    系统bug是什么意思(系统bug了)

  • 快手复制链接怎么保存(快手复制链接怎么拿图)

    快手复制链接怎么保存(快手复制链接怎么拿图)

  • 程序翻译的方式有哪两种(程序翻译的方式有几种)

    程序翻译的方式有哪两种(程序翻译的方式有几种)

  • win10重置会删除桌面文件吗(win10重置会删除其他盘的数据吗)

    win10重置会删除桌面文件吗(win10重置会删除其他盘的数据吗)

  • 后台耗电应用怎么关掉

    后台耗电应用怎么关掉

  • 拼多多怎样获得宝刀(拼多多怎样获得金币)

    拼多多怎样获得宝刀(拼多多怎样获得金币)

  • 电脑系统安全问题是怎样导致的?(电脑安全系统无法启动怎么办)

    电脑系统安全问题是怎样导致的?(电脑安全系统无法启动怎么办)

  • 其他权益工具投资属于什么科目
  • 冲减暂估成本的会计分录
  • 未确认融资收益对应的科目是什么
  • 增值税申报表在哪里打印
  • 医院员工工资表模板
  • 收到电子退库如何操作
  • 房地产开发企业资质证书
  • 原会计收入准则最新
  • 房地产开发企业土地增值税清算
  • 员工工资薪金会计如何核算?
  • 政策性用房包括哪些
  • 我国流转税的税种组成为
  • 政府扶持资金科目怎么做?
  • 用于在建工程的原材料进项税额可以抵扣吗
  • 多开进来的发票怎么结算税点呢?
  • 购置股权账务处理流程
  • 分配结转制造费用会计分录怎么写?
  • 劳务公司差额开票的方式有哪些
  • 收取的职工房租如何入账
  • 旅行社会议主持开场
  • 想做边销茶生意?增值税可以这样处理
  • 增值税发票抵扣进项税什么意思
  • 监理费该谁出
  • 劳务工资要附什么合同
  • 旧设备出口要交增值税吗
  • 已计提的存货跌价准备确认为净损失吗
  • 先开发票再预缴税款吗
  • 专项应付款转资本公积需要什么附件
  • 进口增值税可以抵扣销项税额吗
  • 坏账减值准备账务处理
  • 付临时工工资计入什么科目
  • 企业之间的违约金进什么科目
  • anyproxy提高公众号文章采集效率
  • cachelib
  • 王者荣耀体验皮肤什么时候结束
  • 其他应付款不需要支付的怎么处理,预算会计
  • 公司法人变更账户没有改有影响吗
  • Uni-app + Vue3 + TS +Vite 创建项目
  • 结霜的早晨
  • 货物发生非正常损失为什么要做j进项转出
  • CNN+LSTM+Attention实现时间序列预测(PyTorch版)
  • 角点检测算法
  • 新手入门指南
  • php常用array函数
  • 印花税减半征收减免性质代码
  • 对供应商的罚款通知怎么写
  • 职工福利费的作用
  • mysql查询语句慢怎么优化
  • 月末一般无余额的账户是( )
  • 跨月的增值税普通发票能作废吗
  • 国企注册资本实缴
  • 计提投资性房地产折旧会计科目
  • 服装公司的会计怎么做账
  • 查定征收在哪一章
  • 外购材料用于建筑工程会计分录
  • 工商营业执照变更网上怎么操作
  • 小规模纳税人劳务费税率
  • 跨年度退货可以不退款吗
  • 公对私转账有没有手续费
  • 企业为员工代缴社保怎样在网上申报
  • 个体工商户个人经营所得税税率表
  • 调整后视镜
  • mac如何隐藏桌面
  • 手机耳机插在电脑上能说话吗
  • windows sky high
  • windows8怎么更新到最新版本
  • windows8 defender
  • win8开机启动项
  • win8的应用商店
  • ie11打不开闪退解决办法win 7
  • 在linux系统中,用来存在系统所需
  • win10开机显示recover
  • win7账户不见了
  • jquery 插件写法
  • 几个常用的微课网站
  • android自定义ui
  • 捐赠支出的扣除标准是什么是30%吗
  • 税控设备可以在电子税务局上买吗
  • 怎样在中国税务用手机交社保
  • 混凝土税率是多少2021
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设