消息推送(本地、远程推送)
本地推送
概述:
本地推送主要运用在系统工具中,如闹钟、生日提醒等。
具体步骤:
1:实例化一个推送对象
2:为推送对象设置各种需要的属性
3:添加推送对象
远程推送
概述:
由远程服务器推送数据到客户端。部分情况需要开发者账号申请证书,生成配置文件等。
实现方式具体有一下几种:
1:短轮询
概念:就是客户端定时的向服务器发送请求询问是否有数据更新,不论有否更新,服务器都即时给出响应结果。
优点:后端程序编写容易
缺点:大多数请求都是无用的,浪费了带宽和服务器资源。数据更新不及时。
实际应用:适用于小型应用。
2:长轮询
概念:就是客户端向服务端发送请求询问是否有数据更新,服务端将请求挂起,然后查看服务端是否有更新。如果有更新就响应客户端结果,如果没有就一直挂起,直到超时。然后客户端处理完响应结果(包括超时)后再次发送请求以此循环。
优点:在无消息的情况下不会频繁请求,耗费资源小。
缺点:服务器挂起请求会消耗资源 ,返回数据顺序无法保证,难以维护管理。
实际应用:WebQQ、Hi网页版、Facebook IM。
3:长连接
概念:客户端向服务端发起请求tcp连接后,服务端不关闭tcp连接,保持持久性连接状态。
⭕️ 隐藏的iframe
描述:在页面中嵌入一个隐藏的iframe, 将这个iframe的src属性设置为一个长连接请求或是xhr请求,服务端就能不断的往客户端传入数据了。
⭕️ H5 WebSocket
描述:WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。
优点:消息即时到达,不发送无用连接请求;管理起来也相对方便。
缺点:服务器维护一个长连接会增加开销。
实际应用:Gmail聊天
4:Flash Socket
概念:在页面中嵌入一个使用了Socket类的Flash程序,JS通过调用此Flash程序的Socket接口与服务器接口进行通信,JS在收到服务器传来的消息时控制页面的显示。
优点:即时通信。
缺点:客户端需要安装Flash插件;非HTTP协议,无法自动穿越防火墙。
实际应用:网络互动游戏。