一、 环境搭起来
框架用Spring Boot,省心。Maven依赖主要就这几个:
Spring Boot Starter Web:基础Web功能。
Spring Boot Starter Data JPA:操作MySQL数据库。
Spring Boot Starter Websocket:核心,WebSocket支持。
MySQL Connector Java:连接MySQL数据库。
数据库表就简单点,建个表:
实体类(DeviceStatus)和Repository接口(DeviceStatusRepository)就是常规的JPA那一套,这里就不贴代码占篇幅了。
二、 WebSocket核心配置
重点来了,配置WebSocket。我这儿用的是Spring提供的WebSocket API。
先写个配置类,继承:
这里用了SockJS,是为了兼容那些不支持WebSocket的浏览器,算是个降级方案。
然后,搞个Service (),用来模拟设备数据变化,并主动向WebSocket客户端推送。这里用一个定时任务来模拟:
是神器,直接用它就能发消息。这里我们发到 这个目的地。
三、 前端页面连接和接收
前端页面就用简单的HTML + JavaScript,配合SockJS和STOMP客户端库。
前端逻辑很清晰:连接 -> 订阅指定Topic -> 收到消息后解析JSON并更新DOM。
四、 测试和踩坑提醒
测试:启动应用,打开页面。然后在MySQL里手动修改表的字段。等下一个10秒周期,就能在页面上看到数据自动更新了,效果杠杠的。
注意点:
这个案例算是把MySQL数据通过WebSocket实时推送到前端的基本链路跑通了。虽然例子简单,但核心思想都在。兄弟们可以根据自己的业务场景进行扩展和优化,比如更复杂的数据过滤、分房间推送等等。希望这篇记录能帮到正在折腾的你。