点击下崽 ZY:百度网盘
什么是音讯推送(push)
推送的场景比拟多,比方有人关注我的公众号,这时我就会收到一条推送音讯,以此来吸引我点击关上利用。
音讯推送 (push) 通常是指网站的经营工作等人员,通过某种工具对用户以后网页或挪动设施 APP 进行的被动音讯推送。
音讯推送个别又分为 web 端音讯推送和挪动端音讯推送。
上边的这种属于挪动端音讯推送,web 端音讯推送常见的诸如站内信、未读邮件数量、监控报警数量等,利用的也十分宽泛。
在具体实现之前,咱们再来剖析一下前边的需要,其实性能很简略,只有触发某个事件(被动分享了资源或者后盾被动推送音讯),web 页面的告诉小红点就会实时的 + 1 就能够了。
通常在服务端会有若干张音讯推送表,用来记录用户触发不同事件所推送不同类型的音讯,前端被动查问(拉)或者被动接管(推)用户所有未读的音讯数。
音讯推送无非是推(push)和拉(pull)两种模式,下边咱们一一理解下。
短轮询
轮询 (polling) 应该是实现音讯推送计划中最简略的一种,这里咱们暂且将轮询分为短轮询和长轮询。
短轮询很好了解,指定的工夫距离,由浏览器向服务器收回 HTTP 申请,服务器实时返回未读音讯数据给客户端,浏览器再做渲染显示。
一个简略的 JS 定时器就能够搞定,每秒钟申请一次未读音讯数接口,返回的数据展现即可。
setInterval(() => {
// 办法申请
messageCount().then((res) => {
if (res.code === 200) {this.messageCount = res.data}
})
}, 1000);
复制代码
成果还是能够的,短轮询实现诚然简略,毛病也是不言而喻,因为推送数据并不会频繁变更,无论后端此时是否有新的音讯产生,客户端都会进行申请,势必会对服务端造成很大压力,节约带宽和服务器资源。