Web提醒服务的四种实现方式比较
来源:互联网 发布:mysql可视化面板 编辑:程序博客网 时间:2024/05/10 23:07
很多的大型Web系统中都有一个可以提醒用户的功能。
提醒的消息自然是越新鲜越实时越好。
对此,不同的系统采用不同的策略。
刷新。当刷新页面的时候查询新的消息。
当用户长期停留在一个页面的情况(以SPA为极端情况)下,这种刷新的操作就会使得消息的新鲜度受损。但总体来说,方便实现,且开销不大。用户在一个页面上停留的时间越短,这种策略就越好。短轮询。定期发送一个Ajax请求到服务器检查新的消息。
设置一个周期(如1秒)向服务器发送一个异步请求检查是否存在新的消息。周期越短,开销越大;周期越长,新鲜度越低。要视具体情况权衡周期,通常周期的设置可以有 1秒、10秒、1分钟等,周期不会过长。长轮询。与服务器建立长连接,用chunk流不断发送信息。
在一开始传数据(通常是指HTML)的时候,服务器设置类型为chunk,不告诉客户端这个数据具体有多少,因此客户端与服务器会保持持久的连接,会接受服务器持续发送的数据。这种情况可以想象看网络视频的时候,一个缓冲流的状态。优点是没有多余浪费的网络I/O资源(相比于短轮询),拥有真正的实时性。缺点是这个流不容易操控,操作起来不自然;客户端只能被动接受服务器的数据,如果要与服务器对话又要借助Ajax。套接字。与服务器建立套接字,实时全双工的TCP协议的应用。
自H5技术中WebSocket的出现,彻底取代轮询的方案就已经出现。首先套接字也是建立一个长连接,但它的通讯协议就是ws,与http不是同一个协议,但它们都基于TCP。WebSocket可以用JavaScript直接操作,实时可读可写,相当于与服务器建立了一个新的实时对话通道。节约了短轮询的I/O浪费,又使得长轮询的编程复杂度下降。总体完爆轮询,是现代提醒服务,以及其他实时应用的不二之选。
说起来长轮询本质上是用HTTP模拟套接字,但用HTTP会有若干别扭之处。这些都在WebSocket出现之后迎刃而解。
- Web提醒服务的四种实现方式比较
- 异步Io的 四种提醒方式方式
- web方式的订单提醒
- java 复制 的四种实现方式 及其比较
- WEB消息提醒实现之二 实现方式-基于Iframe的流方式
- IIS web服务实现虚拟主机的三种方式
- Web服务和XFire实现Webservice的几种方式
- 实现web数据同步的四种方式
- Centos里实现web数据同步的四种方式
- 实现web数据同步的四种方式
- java四种开发方式的比较
- 操作四种xml方式的比较
- tomcat部署服务的四种方式
- 服务的四种启动方式
- tomcat部署服务的四种方式
- 通过WEB实现的定时提醒功能...
- 通过WEB实现的定时提醒功能
- 关于ViewPager、ViewFilpper、ViewFlow,Gallery四种实现水平滑动方式的比较
- poj之旅_2184
- C primer plus 第八章 例题疑问(递归)(求解答求回复)
- App Store研究:iOS APP提交上架最新流程
- 图片的分辨率大于设备分辨率或者小于设备的分辨率的显示问题
- 常用排序算法的时间复杂度和空间复杂度
- Web提醒服务的四种实现方式比较
- 59. Spiral Matrix II
- call by value 和 call by reference
- [Android进阶]Java、Android 内存泄漏总结
- C#神器 委托 + Unity神器 协程
- THE ONE使用笔记(3)——DirectDelivery源码分析
- [HDU 4336] Card Collector (期望DP)
- (2.2.8.4 & 4.4.15.1)Gradle:multiDexEnabled之DEX 方法超过64K限制和gradle编译OOM问题解决
- 【Arduino官方教程第零辑】基础部分 2-1 数字引脚