前言
接收消息对于大家来说应该是个实时都在接触的事情,e.g:
- 微信聊天、通知
- 钉钉办公、上课(受死吧小学生~)
- 各种app的推送
- ...
大部分人应该都被消息给骚扰过,然后选择了关闭通知、消息免打扰、甚至删除app等措施。今天讲的是你们最喜欢的骚扰推送消息<img width='30' src="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcTr2LXm0bTX-AYm1npW5Xp6RW2EcDSCuMte3iWG3S364z6hoSM4&usqp=CAU">
为什么我们要做消息推送呢,主要还不是nodejs入门成本不高作为一个前端也想把消息掌握在自己手里,推送什么、如何推送
一、推送什么
推送包含主动推送跟被动推送,主动推送是消息推送的难点,这需要根据不同场景不同人不同时机进行不同推送,业界做的好的例如某头条、某音(平时推送的都还比较符合个人喜好,刷久了会推让你休息的视频,晚上太晚了会推让你休息的视频 --- 钱给到位,广告随便打<img width='30' src="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcTr2LXm0bTX-AYm1npW5Xp6RW2EcDSCuMte3iWG3S364z6hoSM4&usqp=CAU">),我们的目前还没做到这么好的体验,都是统一推送,提醒相关人员查看
主动推送
- 每个工作日早上10:30推送前端资讯到部门群
- 每个工作日提醒大家写日报、一小时后提醒没写的人
- 每周最后一个工作日18:30提醒大家写周报
- 项目crate mrissue通知对应人进行查看等
- ...
被动推送
- 输入花名返回用户信息
- 查看mr统计数据
- ...
二、如何推送
一张思维导图带大家了解下
相关难点
-
数据获取
- 数据源
- 爬虫ip拦截
- 获取时间
-
数据处理
- 特殊数据维护:第三方接口会有限制,需要有缓存数据方案
- 数据维护
- 推送前预览
- 可视化配置时的处理
- ...
-
推送
- 推送渠道接入及按照相应格式推送(不同平台格式可能不同)
- 防重复
- 时间准确性
- 系统崩溃
- 数据统计出报表
- ...
三、技术选型
实现功能的基础上,可选择更加优秀的技术方案进行迭代重构
Frame:Egg.js
为什么使用Egg:
- 提供基于 Egg 定制上层框架的能力
- 高度可扩展的插件机制
- 内置多进程管理
- 基于 Koa 开发,性能优异
- 框架稳定,测试覆盖率高
- 渐进式开发
Database:MongoDB
为什么使用MongoDB:
- 面向文档的数据库 – 数据以JSON格式的文档存储。
- 任意字段的索引
- 复制和高可用性
- 自动分片
- 丰富的查询
- 就地更新快
Deploy:Docker
为什么使用Docker:
- 快速交付和部署 可通过“镜像”来构建容器,通过容器实现高度灵活的自动化交付流程,构建弹性可扩展的系统架构。
- 安全性与高资源利用 容器之间的是相互隔离的,与底层共享操作系统,性能更加优良,系统负载更低,更充分地利用系统资源。
- 环境标准化
最后
其实在开发的时候也遇到过不少问题(防重异常、消息无法正常推送、服务崩溃等)、也经历过几次重构,毕竟程序员不在成长路上就在写bug路上,希望这篇文章可以让大家大致了解一下小电前端的消息推送,然后可以互相探讨。
后续文章会详细介绍小电的前端推送的实现过程:中间遇到的问题、解决办法、版本更替始末之类的
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。