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

  • vivo x27咋删除应用程序(vivo怎么删除app)

    vivo x27咋删除应用程序(vivo怎么删除app)

  • 快手连续播放咋设置(快手连续播放视频)

    快手连续播放咋设置(快手连续播放视频)

  • 爱奇艺客户端在哪里找到(爱奇艺客户端在电脑上有声音没有画面怎么弄)

    爱奇艺客户端在哪里找到(爱奇艺客户端在电脑上有声音没有画面怎么弄)

  • vivo手机突然充不了电(vivo手机突然充不进去电了是怎么回事)

    vivo手机突然充不了电(vivo手机突然充不进去电了是怎么回事)

  • 手机中毒会感染wifi吗(手机中毒会感染病毒吗)

    手机中毒会感染wifi吗(手机中毒会感染病毒吗)

  • 华为p40pro超级微距怎么打开(华为p40pro超级微距)

    华为p40pro超级微距怎么打开(华为p40pro超级微距)

  • 模拟摄像头一天占用多少G(全国各地摄像头)

    模拟摄像头一天占用多少G(全国各地摄像头)

  • 苹果手机视频通话对方听不到声音怎么回事

    苹果手机视频通话对方听不到声音怎么回事

  • 开启幸运字符对方知道吗(如何开启幸运字符标识)

    开启幸运字符对方知道吗(如何开启幸运字符标识)

  • 苹果x怎么设置来电拒接(苹果x怎么设置陌生来电拦截)

    苹果x怎么设置来电拒接(苹果x怎么设置陌生来电拦截)

  • 手机充一晚上电有事吗(手机充一晚上电会爆炸吗)

    手机充一晚上电有事吗(手机充一晚上电会爆炸吗)

  • 华为nova6截图怎么截(华为nove6截长图)

    华为nova6截图怎么截(华为nove6截长图)

  • 快手地球探索全球用的是什么软件(快手地球是什么意思)

    快手地球探索全球用的是什么软件(快手地球是什么意思)

  • 微信更换实名认证之前的还有记录吗(微信更换实名认证)

    微信更换实名认证之前的还有记录吗(微信更换实名认证)

  • 小米6残影怎么处理(小米6屏幕显示有残影)

    小米6残影怎么处理(小米6屏幕显示有残影)

  • 荣耀v20怎么调24时间(荣耀v20怎么调字体大小)

    荣耀v20怎么调24时间(荣耀v20怎么调字体大小)

  • OPPO k5怎么打开usb调试(oppok5手机怎样打开usb接口)

    OPPO k5怎么打开usb调试(oppok5手机怎样打开usb接口)

  • oppo的nfc功能在哪里(oppo手机nfc功能)

    oppo的nfc功能在哪里(oppo手机nfc功能)

  • 苹果11系列信号有没有提升(苹果11系列信号差吗)

    苹果11系列信号有没有提升(苹果11系列信号差吗)

  • 什么叫反激活设备(反激活教程)

    什么叫反激活设备(反激活教程)

  • 苹果7尺寸(苹果14尺寸和14promax尺寸)

    苹果7尺寸(苹果14尺寸和14promax尺寸)

  • iphone6提速技巧(苹果6如何提升速度)

    iphone6提速技巧(苹果6如何提升速度)

  • 钉钉怎么清除人脸识别(钉钉怎么删除人员)

    钉钉怎么清除人脸识别(钉钉怎么删除人员)

  • fts.exe是什么进程 有什么作用 fts进程查询(fte文件怎么打开)

    fts.exe是什么进程 有什么作用 fts进程查询(fte文件怎么打开)

  • 伫立枝头的旅鸫鸟,加拿大 (© marcophotos/Getty Images)

    伫立枝头的旅鸫鸟,加拿大 (© marcophotos/Getty Images)

  • 所得税残疾人工资加计扣除
  • 开红字发票需要收回原发票吗
  • 电子承兑提示付款
  • 小微企业所得税税率2.5% 10% 25%
  • 酒店购买餐具会计分录
  • 企业亏损法定盈亏是什么
  • 房产折旧计算方法 举例
  • 资产减值准备会计科目编码
  • 电影剧本稿费代扣代缴个人所得税如何处理?
  • 土地增值税清算时间
  • 公司买了股票怎么做账
  • 进项税转出的附加税怎么做
  • 收到供应商发票的会计处理怎么做?
  • 国税申报需要带什么资料
  • 个人开具工程款发票所得税怎么算
  • 含税金是什么意思
  • 酒店挂账要做收款凭证吗
  • 工程施工合同暂估价格入账会计分录
  • 公司按揭购车
  • 高新创投企业所得税税率
  • 消费税怎样做分录
  • 税没申报不能领发票吗
  • 营改增建筑业税率变化时间
  • 电脑找不到ie浏览器
  • 以前年度损益调整借贷方向
  • 红冲暂估需要附件吗
  • 年末一般纳税人税率表
  • 债务重组账务处理会计分录
  • 土地承包费收入怎么做账务处理
  • 所得税和所得税税率
  • 软件和集成电路杂志官网
  • form表单使用
  • 在产品定额工时怎么算
  • 汇总开具的运输发票
  • 个体工商户如何给员工交社保
  • 微服务架构java框架
  • 企业非流动资产占比多说明什么
  • vue qrcode生成二维码
  • 取得短期借款会计分录
  • 2019年新会计制度改革
  • 个体户个人所得税税率表
  • 应征增值税不含税销售额是什么
  • discuz发帖标签
  • 小规模纳税人免征增值税的账务处理
  • 延期缴纳土地使用税怎么办理
  • SQL Server UPDATE语句的用法详解
  • 差旅费津贴怎么报税
  • 金税四期监控银行卡
  • 车船税每年都是一样的吗
  • 无形资产如何摊销 当月还是下月
  • 珠宝行业的会计处理方式
  • 增值税专用发票的税率是多少啊
  • 小额贷款在银行需要什么条件
  • 跨境电商怎么交流
  • 母公司孙子公司
  • 当月预交增值税时所属期选了上期怎么办
  • 厂家返利怎么入账
  • 仓库费用计入什么科目
  • 支付厂房租赁费现金流
  • 总分类账封面封地和启用页的区别
  • win7系统最佳性能
  • xp系统没有安装好,请重新运行安装程序
  • 电脑windowsxp无法启动怎么办
  • 2019谷歌浏览器
  • 怎么在win7系统看蓝牙
  • linux learn
  • Android游戏开发教程
  • h5抽奖转盘
  • 批处理删除注册表指定项
  • java程序员准备骑驴找马了,需要怎么准备
  • Unity 相关经典博客资源总结
  • dos批处理实例800例
  • node.js上传文件
  • python中的堆和栈
  • jquery常用的5个方法
  • 四川国税局发票查询
  • 季度申报怎么更正
  • 财税专家刘杨简历
  • 四川地方税务 副局长 晓宏
  • 企业代收行政事业性收费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设