目录
1、需求分析
一、需求分析
项目需求是 多个用户端提交报修信息 ,管理端web实时接收并显示。
首先用户端是通过提交http请求去更新报修表,而管理端与后端采用websocket实现实时通信。现在的难点在于如何监听mysql数据库中报修表的变化。
二、解决思路
解决方案一
使用mysql_udf_http(根据mysql表自动触发发送http请求通知后端),后端使用websocket通知前台进行数据更新。我个人认为这种是最好的解决方案,但此方案基本都是在linux系统下进行实现的。
解决方案二
也是我采用的,后台采用轮询的方式来监测报修表(虽然这会损耗服务器的资源但是这取决于你的轮询间隔和项目的需求),若有新的报修信息则使用websocket通知前台进行数据更新。
三、实现过程
实现步骤
1. 为了不改变原表的属性,在数据库中创建一个副表来标记是否为新的报修信息。
2. spring后端搭建websocket服务端,并采用轮询的方式来监控数据库。
(1)数据库操作
建立副表:id是主表的主键,flag是标记是否为新的消息(flag为0表示旧消息,flag为2表示新消息)。
当在原表里插入数据或者删除数据,副表要进行相应的更新,所以我们要建立两个触发器。
触发器的插入与删除的sql可以自行百度
(2)spring后端的实现
(3)前端采用websocket实时接收消息
(2)和(3)前后端的websocket配置可以 参考
总结
这里需要注意: 后端的websocket的地址一定要要加上根路径,否则会404
如有疑问,欢迎评论!!!