当前位置: 首页 > news >正文

十六、消息推送

一、什么是消息推送?

消息推送通常是指网站的运营工作等人员,通过某种工具对用户当前网页或移动设备 APP 进行的主动消息推送。
消息推送一般又分为 Web 端消息推送和移动端消息推送。

消息推送无非是推(push)和拉(pull)两种形式,下边我们逐个了解下。

二、消息推送常见方案?

短轮询

轮询(polling) 应该是实现消息推送方案中最简单的一种,这里我们暂且将轮询分为短轮询和长轮询。
短轮询很好理解,指定的时间间隔,由浏览器向服务器发出 HTTP 请求,服务器实时返回未读消息数据给客户端,浏览器再做渲染显示。
一个简单的 JS 定时器就可以搞定,每秒钟请求一次未读消息数接口,返回的数据展示即可。

setInterval(() => {// 方法请求messageCount().then((res) => {if (res.code === 200) {this.messageCount = res.data}})
}, 1000);

效果还是可以的,短轮询实现固然简单,缺点也是显而易见,由于推送数据并不会频繁变更,无论后端此时是否有新的消息产生,客户端都会进行请求,势必会对服务端造成很大压力,浪费带宽和服务器资源。

长轮询

长轮询是对上边短轮询的一种改进版本,在尽可能减少对服务器资源浪费的同时,保证消息的相对实时性。长轮询在中间件中应用的很广泛,比如 Nacos 和 Apollo 配置中心,消息队列 Kafka、RocketMQ 中都有用到长轮询。
Nacos长轮询拉取配置中心配置

长轮询其实原理跟轮询差不多,都是采用轮询的方式。不过,如果服务端的数据没有发生变更,会 一直 hold 住请求,直到服务端的数据发生变化,或者等待一定时间超时才会返回。返回后,客户端又会立即再次发起下一次长轮询。

长轮询的简单实现

iframe 流

SSE(Server-Sent Events)

Websocket

MQTT

http://www.lryc.cn/news/42951.html

相关文章:

  • PMP项目管理-【第一章】引论
  • 前端布局小案例,分享3个漂亮的卡片组件
  • 博客重载记录
  • open-cv绘制简单形状line() circle() rectangle() polylines() putText() cvtColor()
  • 基于 PyTorch + LSTM 进行时间序列预测(附完整源码)
  • GEE页面介绍
  • python自动发送邮件,qq邮箱、网易邮箱自动发送和回复
  • hastcat
  • 242. 一个简单的整数问题
  • docker安装Redis高可用(一主二从三哨兵)
  • 安全防御之入侵检测篇
  • 学习系统编程No.10【文件描述符】
  • 网络基础认识
  • 【蓝桥杯_练习】
  • 【C语言蓝桥杯每日一题】——跑步锻炼
  • Qt之实现类似软件安装时的新功能介绍界面
  • echarts地图不同地区设置不同的颜色
  • 网易云音乐API部署Vercel获取接口过程
  • Java基础:字符串(String)及常用操作
  • FL Studio 21中文版支持主题随心换,FL Studio 21Mac版新增对苹果M2/1家族芯片原生支持。
  • 【蓝桥杯集训·周赛】AcWing 第96场周赛
  • 【数据结构】顺序表的深度刨剖析
  • Unity 之 使用原生UGUI实现随手移动摇杆功能经典实例
  • Linux内核源代码概述
  • Nginx 教程-动静分离
  • 自己设计的网站,如何实现分页功能?(详细代码+注释)
  • STM32F407控制微型推拉式电磁铁(通过继电器)
  • VS Code工作区用法
  • Mybatis-Plus SQLFeatureNotSupportedException: getObject with type问题解决
  • Unity | 发布Android的那些事儿