前言

接收消息对于大家来说应该是个实时都在接触的事情,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">),我们的目前还没做到这么好的体验,都是统一推送,提醒相关人员查看

主动推送

  1. 每个工作日早上10:30推送前端资讯到部门群
  2. 每个工作日提醒大家写日报、一小时后提醒没写的人
  3. 每周最后一个工作日18:30提醒大家写周报
  4. 项目crate mrissue通知对应人进行查看等
  5. ...

被动推送

  1. 输入花名返回用户信息
  2. 查看mr统计数据
  3. ...

二、如何推送

一张思维导图带大家了解下

images

相关难点

  1. 数据获取

    1. 数据源
    2. 爬虫ip拦截
    3. 获取时间
  2. 数据处理

    1. 特殊数据维护:第三方接口会有限制,需要有缓存数据方案
    2. 数据维护
    3. 推送前预览
    4. 可视化配置时的处理
    5. ...
  3. 推送

    1. 推送渠道接入及按照相应格式推送(不同平台格式可能不同)
    2. 防重复
    3. 时间准确性
    4. 系统崩溃
    5. 数据统计出报表
    6. ...

三、技术选型

实现功能的基础上,可选择更加优秀的技术方案进行迭代重构

Frame:Egg.js

为什么使用Egg:

  • 提供基于 Egg 定制上层框架的能力
  • 高度可扩展的插件机制
  • 内置多进程管理
  • 基于 Koa 开发,性能优异
  • 框架稳定,测试覆盖率高
  • 渐进式开发

Database:MongoDB

为什么使用MongoDB:

  • 面向文档的数据库 – 数据以JSON格式的文档存储。
  • 任意字段的索引
  • 复制和高可用性
  • 自动分片
  • 丰富的查询
  • 就地更新快

Deploy:Docker

为什么使用Docker:

  • 快速交付和部署 可通过“镜像”来构建容器,通过容器实现高度灵活的自动化交付流程,构建弹性可扩展的系统架构。
  • 安全性与高资源利用 容器之间的是相互隔离的,与底层共享操作系统,性能更加优良,系统负载更低,更充分地利用系统资源。
  • 环境标准化

最后

其实在开发的时候也遇到过不少问题(防重异常、消息无法正常推送、服务崩溃等)、也经历过几次重构,毕竟程序员不在成长路上就在写bug路上,希望这篇文章可以让大家大致了解一下小电前端的消息推送,然后可以互相探讨。

后续文章会详细介绍小电的前端推送的实现过程:中间遇到的问题、解决办法、版本更替始末之类的


XDian_fed
1 声望0 粉丝

下一篇 »
常见web攻击