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

基于若依框架开发WebSocket接口

添加依赖

在项目的pom.xml文件中添加WebSocket依赖。若依框架默认可能未包含WebSocket支持,需手动引入:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

配置WebSocket

创建配置类启用WebSocket支持,并注册WebSocket处理器:

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {@Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(myWebSocketHandler(), "/ws").setAllowedOrigins("*");}@Beanpublic WebSocketHandler myWebSocketHandler() {return new MyWebSocketHandler();}
}

实现WebSocket处理器

自定义处理器继承TextWebSocketHandler,处理连接、消息和关闭事件:

public class MyWebSocketHandler extends TextWebSocketHandler {private static final Set<WebSocketSession> sessions = new CopyOnWriteArraySet<>();@Overridepublic void afterConnectionEstablished(WebSocketSession session) {sessions.add(session);System.out.println("New connection: " + session.getId());}@Overrideprotected void handleTextMessage(WebSocketSession session, TextMessage message) {System.out.println("Received message: " + message.getPayload());for (WebSocketSession s : sessions) {try {s.sendMessage(new TextMessage("Echo: " + message.getPayload()));} catch (IOException e) {e.printStackTrace();}}}@Overridepublic void afterConnectionClosed(WebSocketSession session, CloseStatus status) {sessions.remove(session);System.out.println("Connection closed: " + session.getId());}
}

前端连接WebSocket

在Vue或HTML页面中建立WebSocket连接:

const socket = new WebSocket('ws://localhost:8080/ws');
socket.onopen = function() {console.log('WebSocket connected');socket.send('Hello Server');
};
socket.onmessage = function(event) {console.log('Message from server: ', event.data);
};

若依集成注意事项
  1. 权限控制:若需结合若依的权限系统,可在WebSocket握手时验证Token,例如通过HandshakeInterceptor
  2. 消息广播:结合Redis发布订阅功能实现集群环境下的消息广播。
  3. 心跳检测:客户端需定期发送心跳包,避免连接被意外关闭。
示例:握手拦截器

添加权限验证拦截器:

public class AuthHandshakeInterceptor implements HandshakeInterceptor {@Overridepublic boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) {String token = ((ServletServerHttpRequest) request).getServletRequest().getParameter("token");// 验证Token逻辑return true; // 验证通过返回true}@Overridepublic void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {}
}

在配置类中注册拦截器:

registry.addHandler(myWebSocketHandler(), "/ws").addInterceptors(new AuthHandshakeInterceptor()).setAllowedOrigins("*");

通过以上步骤,即可在若依框架中实现基础的WebSocket通信功能。


文章转载自:

http://1HaO718A.yfrbn.cn
http://L0GZMiJR.yfrbn.cn
http://WTnBZ8T0.yfrbn.cn
http://jRee8rmT.yfrbn.cn
http://S0L2GVyM.yfrbn.cn
http://VcS9tNLo.yfrbn.cn
http://xjFAAvTN.yfrbn.cn
http://thnhysLF.yfrbn.cn
http://aE2epatk.yfrbn.cn
http://F2gJrSxF.yfrbn.cn
http://wwQ5DugS.yfrbn.cn
http://3aqYCWeH.yfrbn.cn
http://ImpdNsrU.yfrbn.cn
http://LIkI0h2Z.yfrbn.cn
http://CwlkEV8L.yfrbn.cn
http://4ee7q2vk.yfrbn.cn
http://BylIdSiz.yfrbn.cn
http://5cVJXO0K.yfrbn.cn
http://oiwNOEsl.yfrbn.cn
http://2tIkGiHx.yfrbn.cn
http://QG06QLM0.yfrbn.cn
http://5J6aviMF.yfrbn.cn
http://9iAXZJZq.yfrbn.cn
http://uXhTxOds.yfrbn.cn
http://kCs2jTUv.yfrbn.cn
http://n1DjszXu.yfrbn.cn
http://XWvSqezb.yfrbn.cn
http://AcoEWUvv.yfrbn.cn
http://evGVEcVI.yfrbn.cn
http://QaoLdqvD.yfrbn.cn
http://www.dtcms.com/a/363304.html

相关文章:

  • 计算机Python毕业设计推荐:基于Django+Vue用户评论挖掘旅游系统
  • 【交易系统系列36】揭秘币安(Binance)技术心脏:从公开信息拼凑“MatchBox”撮合引擎架构
  • 海康摄像头开发---标准配置结构体(NET_DVR_STD_CONFIG)
  • End-To-End 之于推荐-kuaishou OneRec2 笔记
  • css中 ,有哪些⽅式可以隐藏页⾯元素? 区别?
  • 03_网关ip和端口映射(路由器转发)操作和原理
  • Telnet 原理与配置
  • 基于STM32单片机智能家居wifi远程监控系统机智云app设计
  • Replit在线编程工具:支持多语言环境免配置与实时协作,助力编程学习调试与社区项目复用
  • Spring Security的@PreAuthorize注解为什么会知道用户角色?
  • 0902 C++类的匿名对象
  • Nano Banana 复刻分镜,多图结合片刻生成想要的视频
  • 适配第一性原理与分子动力学研究的高性能工作站解析
  • 信息安全各类加密算法解析
  • LDR6600:2C1A适配器协议方案芯片
  • 综合诊断板CAN时间戳稳定性测试报告8.28
  • Nek La Vita È DJ大来 安装教程 简单步骤 教你怎么装(附安装包下载)
  • Windows 命令行:父目录与子目录
  • 力扣222 代码随想录Day15 第四题
  • 缓存工具服务(封装缓存击穿+缓存穿透+缓存雪崩)
  • HCIE-Datacom 论述【Y园区】
  • 流程自动化常见三大悖论及RPA人机协作的工程实践
  • SQL JOIN 操作全面解析
  • 用高质量外链驱动SEO增长:2025年链接建设实战策略
  • milvus使用
  • 2025 年,这些求职技能利用空闲时间就能学,轻松提升职场竞争力​
  • 【V8引擎】介绍
  • WS2812灯带效果设计器上位机
  • 数据结构——顺序表和单向链表(1)
  • 【小白笔记】使用 robocopy 解决大文件复制难题:从踩坑到精通