[点晴永久免费OA]Web提醒服务的四种实现方式比较
当前位置:点晴教程→点晴OA办公管理信息系统
→『 经验分享&问题答疑 』
很多的大型Web系统中都有一个可以提醒用户的功能。 提醒的消息自然是越新鲜越实时越好。 对此,不同的系统采用不同的策略。 刷新。当刷新页面的时候查询新的消息。 当用户长期停留在一个页面的情况(以SPA为极端情况)下,这种刷新的操作就会使得消息的新鲜度受损。但总体来说,方便实现,且开销不大。用户在一个页面上停留的时间越短,这种策略就越好。 短轮询。定期发送一个Ajax请求到服务器检查新的消息。 设置一个周期(如1秒)向服务器发送一个异步请求检查是否存在新的消息。周期越短,开销越大;周期越长,新鲜度越低。要视具体情况权衡周期,通常周期的设置可以有 1秒、10秒、1分钟等,周期不会过长。 长轮询。与服务器建立长连接,用chunk流不断发送信息。 在一开始传数据(通常是指HTML)的时候,服务器设置类型为chunk,不告诉客户端这个数据具体有多少,因此客户端与服务器会保持持久的连接,会接受服务器持续发送的数据。这种情况可以想象看网络视频的时候,一个缓冲流的状态。优点是没有多余浪费的网络I/O资源(相比于短轮询),拥有真正的实时性。缺点是这个流不容易操控,操作起来不自然;客户端只能被动接受服务器的数据,如果要与服务器对话又要借助Ajax。 套接字。与服务器建立套接字,实时全双工的TCP协议的应用。 自H5技术中WebSocket的出现,彻底取代轮询的方案就已经出现。首先套接字也是建立一个长连接,但它的通讯协议就是ws,与http不是同一个协议,但它们都基于TCP。WebSocket可以用JavaScript直接操作,实时可读可写,相当于与服务器建立了一个新的实时对话通道。节约了短轮询的I/O浪费,又使得长轮询的编程复杂度下降。总体完爆轮询,是现代提醒服务,以及其他实时应用的不二之选。
该文章在 2019/9/12 0:03:31 编辑过 |
关键字查询
相关文章
正在查询... |