当前位置: 首页 > news >正文

在 SpringBoot中的WebSocket使用介绍

在 Spring Boot 中,WebSocket 是一种非常有用的通信协议。WebSocket 可以使客户端和服务器之间实现双向通信,而不是传统的单向 HTTP 请求和响应。本文将介绍在 Spring Boot 中如何使用 WebSocket。

  1. 添加依赖
    在 pom.xml 文件中添加以下依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
  1. 创建 WebSocket 配置类
    创建一个 WebSocketConfig 类,在类上加上 @Configuration 和 @EnableWebSocket 注解。在类中添加一个方法,返回一个 WebSocketHandler 对象。
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {@Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(myHandler(), "/myHandler").setAllowedOrigins("*");}@Beanpublic WebSocketHandler myHandler() {return new MyHandler();}
}

其中,/myHandler 是 WebSocket 的端点,MyHandler 是具体的处理类,setAllowedOrigins(“*”) 表示允许跨域请求。

  1. 创建 WebSocket 处理类
    创建一个 MyHandler 类实现 WebSocketHandler 接口,并重写其中的方法。具体实现可以根据业务需求来进行定制。
public class MyHandler implements WebSocketHandler {@Overridepublic void afterConnectionEstablished(WebSocketSession session) throws Exception {// 连接建立后的操作}@Overridepublic void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {// 处理收到的消息}@Overridepublic void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {// 处理传输错误}@Overridepublic void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {// 连接关闭后的操作}@Overridepublic boolean supportsPartialMessages() {return false;}
}
  1. 发送 WebSocket 消息
    在前端页面中,可以使用 JavaScript 的 WebSocket 对象实现与服务器的通信。例如:
var socket = new WebSocket("ws://localhost:8080/myHandler");socket.onopen = function(event) {// 连接建立后的操作
};socket.onmessage = function(event) {// 处理收到的消息
};socket.onclose = function(event) {// 连接关闭后的操作
};socket.send("hello world");
  1. 测试 WebSocket
    运行 Spring Boot 应用程序,并通过浏览器访问前端页面。在控制台中可以看到 WebSocket 连接的日志信息。可以使用 JavaScript 发送消息,也可以在 MyHandler 中主动发送消息。
session.sendMessage(new TextMessage("hello world"));

总结:
Spring Boot 提供了非常方便的操作 WebSocket 的方式,使得我们可以快速地实现双向通信功能。在实际开发中,可以根据具体业务需求来定制 WebSocket 的处理类。

相关文章:

  • Nginx+Tomcat负载均衡、动静分离以及Nginx负载均衡和四层代理
  • macOS向ntfs格式的移动硬盘写数据
  • web开发学习笔记(2.js)
  • C#,字符串匹配(模式搜索)原生(Native)算法的源代码
  • Node cool 跨域问题的解决
  • kibana查看和展示es数据
  • 2024秋招,顺丰科技测试开发工程师一面
  • CleanMyMac X .4.14.7如何清理 Mac 系统?
  • yum仓库及NFS共享
  • openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_keygen.c
  • 网页设计(十一)JavaScript事件分析
  • windows编译TensorFlowServing
  • 东北编程语言???
  • 代码随想录算法训练营29期|day 22 任务以及具体安排
  • 蓝桥杯C组-填充-贪心
  • SegmentFault for Android 3.0 发布
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 【刷算法】求1+2+3+...+n
  • Java深入 - 深入理解Java集合
  • Java应用性能调优
  • k个最大的数及变种小结
  • leetcode讲解--894. All Possible Full Binary Trees
  • nodejs:开发并发布一个nodejs包
  • Quartz初级教程
  • React+TypeScript入门
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • select2 取值 遍历 设置默认值
  • 测试如何在敏捷团队中工作?
  • 分布式任务队列Celery
  • 和 || 运算
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 聊聊redis的数据结构的应用
  • 详解移动APP与web APP的区别
  • 用Visual Studio开发以太坊智能合约
  • 再谈express与koa的对比
  • #Linux(权限管理)
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)详解PHP处理密码的几种方式
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .NET建议使用的大小写命名原则
  • .net连接MySQL的方法
  • .stream().map与.stream().flatMap的使用
  • /etc/skel 目录作用
  • @Autowired多个相同类型bean装配问题
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [20180129]bash显示path环境变量.txt