基于 WebSocket 的实时通告功能,推送在线与未登录用户

在我们以往的软件或者 站使用中,都有遇到过这种情况,莫名的弹出广告或者通知!而在我们的业务系统中,有的时候也需要群发通知公告的方式去告知 站用户一些信息,那么这种功能是怎么实现的呢,本 Chat 将使用 Spring Boot+WebSocket 来实现这类功能!让你在可以实际运用到项目当中。

通过本 Chat 你将学习到:

  • Spring Boot 工程搭建;
  • 如何将 WebSocket 继承到项目中;
  • 如何设计全 通告业务相关表与功能;
  • 关于 WebSocket 的常见问题解决。

背景介绍

springboot 与 webSocker 整合

使用 Intellij IDEA 快速创建一个 springboot + webSocket 项目

通告表设计

通告表 Bulletin

用户标记表 BulletinUser

业务规则

添加通告
  • 单个用户:通告表添加一条记录,用户标记表添加一条记录
  • 多个用户:通告表添加一条记录,用户标记表添加多条记录
  • 全部用户:通告表添加一条记录
阅读公告
  • 单个用户:修改用户标记表中的记录
  • 多个用户:修改用户标记表中的记录
  • 全部用户:用户标记表添加阅读记录
发现新通告的规则
  • 单个用户:通告表中有,并且通告对象类型是“单个用户”,并且用户标记表中的未读标记是“0”
  • 多个用户:通告表中有,并且通告对象类型是“多个用户”,并且用户标记表中的未读标记是“0”
  • 全部用户:通告表中有,并且通告对象类型是“全部用户”,并且用户标记表中没有用户的信息

通告弹窗提示

  1. 在线用户可以收到并弹窗显示,看过的就不用再显示了(websocket 服务查询当前用户是否有未读的公告,也就是所有全部用户类型通告编 not in 已读通告编 ,多出来的结果就是需要弹窗的通告, 可以时间筛选,免得新员工弹所有公告 )
  2. 没看过的一登录也会弹窗显示或者实时
  3. 前端任何页面都可以接受到最新通告并弹窗(公共 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进行处理,非常感谢!

上一篇 2019年7月7日
下一篇 2019年7月8日

相关推荐