消息推送(Push)是开发和运营人员通过自己的产品或第三方工具对用户移动设备进行的主动消息推送。实现的方式也有多种选择,下面就为大家简单介绍下每种方式的优缺点。

轮询
概念:客户端接口定时向服务端发送请求获取消息的方式,服务器接到请求立马处理并且关闭请求连接,很容易导致出现资源浪费的情况;
当用户轮询调用接口拉取消息,如果出现刚好此时消息拉取完,这时候有新的消息产生,我们定义这其中轮询的间隔时间为N,则新的消息需要等待N后才能获取到;
解决以上问题,可以减少轮询的间隔时间。但是会出现新的问题,如果每次轮询的间隔时间内有新的消息产生,那基本上没有问题,但是如果消息产生的时间比较长,就容易导致很多次的轮询过程中没有新消息获取到,这就出现了浪费链接获取资源的情况;

优点:后端程序编写比较容易
缺点:请求中大半是无用的,浪费带宽和服务器资源
实例:适用于小型应用

长轮询
概念:客户端通过向服务端发送请求,服务端hold住发送请求的链接,直到有新消息出现才返回响应给客户端消息,并且关闭链接,客户端处理完消息后,重新建立连接,获取消息消费;能保证不会频繁请求服务端。

优点:在无消息的情况下不会频繁的请求,耗费的资源少
缺点:服务器Hold住连接会消耗资源,返回数据顺序无法保证,难于管理和维护
实例:WebQQ、Hi网页版、FaceBook IM等

长链接
概念:客户端请求服务端建立连接之后,保持和服务端链接,并且消息源源不断的向客户端输送。

优点:消息即时到达,不发无用的请求;管理起来也相对方便
缺点:服务器维护一个长连接会增加开销
实例:Gmail聊天

Flash Socket
在页面中内嵌入一个使用了Socket类的Flash程序,JavaScript通过调用此Flash程序提供的Socket接口与服务器端的Socket接口进行通信,JavaScript在收到服务器端传送的信息后控制页面的显示,基本上已经废弃,不用flash了。

优点:实现真正的即时通信,而不是伪即时
缺点:客户端必须安装Flash插件;非HTTP协议,无法自动穿越防火墙
实例:网络互动游戏

以上就是几种推送实现方式的优缺点分析,关于推送服务技术,想要了解更多也可以咨询极光。

极光推送官方链接:https://www.jiguang.cn/push