在我们以往的软件或者 站使用中,都有遇到过这种情况,莫名的弹出广告或者通知!而在我们的业务系统中,有的时候也需要群发通知公告的方式去告知 站用户一些信息,那么这种功能是怎么实现的呢,本 Chat 将使用 Spring Boot+WebSocket 来实现这类功能!让你在可以实际运用到项目当中。
通过本 Chat 你将学习到:
- Spring Boot 工程搭建;
- 如何将 WebSocket 继承到项目中;
- 如何设计全 通告业务相关表与功能;
- 关于 WebSocket 的常见问题解决。
背景介绍
springboot 与 webSocker 整合
使用 Intellij IDEA 快速创建一个 springboot + webSocket 项目
通告表设计
通告表 Bulletin
用户标记表 BulletinUser
业务规则
添加通告
- 单个用户:通告表添加一条记录,用户标记表添加一条记录
- 多个用户:通告表添加一条记录,用户标记表添加多条记录
- 全部用户:通告表添加一条记录
阅读公告
- 单个用户:修改用户标记表中的记录
- 多个用户:修改用户标记表中的记录
- 全部用户:用户标记表添加阅读记录
发现新通告的规则
- 单个用户:通告表中有,并且通告对象类型是“单个用户”,并且用户标记表中的未读标记是“0”
- 多个用户:通告表中有,并且通告对象类型是“多个用户”,并且用户标记表中的未读标记是“0”
- 全部用户:通告表中有,并且通告对象类型是“全部用户”,并且用户标记表中没有用户的信息
通告弹窗提示
- 在线用户可以收到并弹窗显示,看过的就不用再显示了(websocket 服务查询当前用户是否有未读的公告,也就是所有全部用户类型通告编 not in 已读通告编 ,多出来的结果就是需要弹窗的通告, 可以时间筛选,免得新员工弹所有公告 )
- 没看过的一登录也会弹窗显示或者实时
- 前端任何页面都可以接受到最新通告并弹窗(公共 parent.js 做 websocket 监听)
以上的功能实现居然可以参考上面 BulletinWebSocket.java 中的这几块代码
总结
SpringBoot 部署与 Spring 部署都有一些差别,但现在用 Srpingboot 的公司多,SpringBoot 创建项目快,所以使用该方式来讲解,有一个问题就是开发 WebSocket 时发现无法通过@Autowired 注入 bean,一直为空。怎么解决呢/p>
其实不是不能注入,是已经注入了,但是客户端每建立一个链接就会创建一个对象,这个对象没有任何的 bean 注入操作,下面贴下实践
解决办法就是 springboot 的启动类注入一个 static 的对象
接着如果那里要使用 Spring 管理在 Bean 的话,就可以使用这种方式使用
文章知识点与官方知识档案匹配,可进一步学习相关知识 络技能树首页概览22321 人正在系统学习中 相关资源:国标软件设计文档(操作手册(GB8567——88),测试分析 告(GB8567…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!