Web提醒服务的四种实现方式比较
2016-05-27 13:08
267 查看
很多的大型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出现之后迎刃而解。
提醒的消息自然是越新鲜越实时越好。
对此,不同的系统采用不同的策略。
刷新。当刷新页面的时候查询新的消息。
当用户长期停留在一个页面的情况(以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出现之后迎刃而解。
相关文章推荐
- java-WEB中的监听器Lisener
- GUI - Web前端开发框架
- Extjs4.0 最新最全视频教程
- MyEclipse Web Project转Eclipse Dynamic Web Project
- axis备忘
- 创业如何选择WEB开发语言
- Erlang实现的一个Web服务器代码实例
- 防止网页脚本病毒执行的方法-from web
- 自学成才的秘密:115个 web Develop 资源
- 使用批处理修改web打印设置笔记 适用于IE
- Apache Web让JSP“动”起来
- web下载的ActiveX控件自动更新
- 推荐六款WEB上传组件性能测试与比较第1/10页
- 关于三种主流WEB架构的思考
- 使用 Iisext.vbs 列出 Web 服务扩展文件的方法
- 使用 Iisext.vbs 删除 Web 服务扩展文件的方法
- 使用 iisext.vbs 禁用 Web 服务扩展的方法
- 用vbs 实现从剪贴板中抓取一个 URL 然后在浏览器中打开该 Web 站点
- web标准知识——从p开始,循序渐进
- web标准知识――用途相似的标签