需求

在公司,有一个需求,是浏览器实时获取服务端数据变化,然后根据变化做相应的动作。需求场景如下:手机端扫描二维码,然后获取待取件订单列表,点击取件,进行取件,同时远端打印机打印出取件小票。

技术难点

  1. 手机端点击取货,浏览器如何感知到,如何做相应的操作(本文要解决的问题)
  2. 浏览器感知后,如何调用打印服务,进行按照相应的模版打印

技术方案及选型

不断轮询(pull的方式)

所谓不断轮询,就是浏览器保持发送请求,检查服务器是否有新信息返回,服务器对于每次请求均应立即响应。这种方式需要设定合理的时间间隔。例如:邮件客户端可以每隔几分钟检查服务器是否有新邮件。

优点

简单,可靠

局限性

效率不高。如果需要及时获得服务器信息,那么轮询频率就必须非常高,导致服务端压力较大。更适合小型应用。

长轮询(pull的方式)

浏览器发送请求,但是服务器不予以响应,一直到服务器有了新信息才响应客户端。从客户端的角度看它和传统的轮询相同。但从服务器端的角度来看它与传统的轮询相比,减少了服务器端的开销。
例子:网页版聊天工具如webqq(摘抄):
1.用户在网页上发送聊天信息时,网页会给服务器发送请求,服务器将聊天数据存储下来;
2.网页也会向服务器请求对方发送的聊天信息;
3.服务器收到这种请求后,会通过“死循环”等方式阻塞该请求,从而在一定程度上控制住这个连接。“死循环“退出的条件有两种:一是有数据需要响应,此时便立即发送该响应;二是超时,等了很久还是没有数据,服务器不能让客户端无限地等待下去,所以会在超时时间点给客户端发送空的响应;
4.网页处理完响应后再向服务器发送新一轮的请求。

优点

相比不断轮询,性能有了很大提升。

缺点

依然有空的响应。

长连接(push的方式)

通过websocket协议使浏览器和服务器建立一个通道,当服务器有信息变化时,就主动推送一次。

优点

真正实时。

局限性

由于websocket是html5的新特性,浏览器对h5的支持有限,目前chrome,firefox,IE10以上支持。

常见应用场景

扫码登录网页版微信。12306支付时,扫支付宝,会自动回填浏览器用户信息等。

选型

技术选型,并不是技术越高级,越高大上越好,而是看我们的技术,能不能在最短的时间内完成,以最低的成本来支撑业务的正常推进。所以,以上三种方法,根据自己系统的情况来选择,并不能定论哪个方法好,哪个方法不好。

浏览器及时感知服务端数据变化的方式相关推荐

  1. SSE:使用HTTP做服务端数据推送的技术及其他通信技术

    文章目录 一.SSE 使用场景 服务端响应示例 浏览器处理服务器返回数据 SSE使用注意事项 使用示例 二.轮询 三.WebSocket 什么是Socket?什么是WebSocket? 那么他是如何建 ...

  2. bootstraptable 加载完成_bootstrap table onLoadSuccess加载服务端数据成功事件

    bootstrap table onLoadSuccess加载服务端数据成功事件 bootstrap table onLoadSuccess加载服务端数据成功的事件,该事件的作用是什么呢?服务端返回自 ...

  3. [react] 怎样使用Hooks获取服务端数据?

    [react] 怎样使用Hooks获取服务端数据? import React, { useState, useEffect } from 'react'; import axios from 'axi ...

  4. Vue与服务端数据交互 [ axios ]

    Vue生命周期 每个Vue实例在被创建到销毁要经过一系列的过程,这整个过程称为Vue实例的生命周期 Vue在生命周期不同的阶段点会自动运行一些函数, 这些函数称为Vue生命周期的钩子(hook)函数 ...

  5. 服务器怎么查服务端数据

    通常情况下,在做性能测试的时候,我们需要关注的点有这些: 服务端处理能力(并发量.qps.响应时间等): 服务端机器性能数据(程序内存占用.cpu占用.网络带宽占用等): 异常请求信息(如服务端返回5 ...

  6. 【工作记录】网易云信最近联系人中加入本地服务端数据

    网易云信最近联系人中加入本地服务端数据 1.实现效果如下(语音聊天中) 2.实现思路: 特定情况下: 1.获取聊天列表(最近联系人中id) 2.根据id,请求所有人的情况 3.刷新列表 3.具体实现: ...

  7. t3畅捷通显示不能登陆服务器,用友T3提示不能登录到服务器:解析服务端数据出现错误,可能服务端是8.13的先前版本?...

    文章摘要:问题现象:第1种情况:登录的时候就直接提示:不能登录到服务器:pc-pcfailed:解析服务端数据出现错误,可能服务端是8.13的先前版本,第二种情况:登录用友T3软件后,点击模块提示:检 ...

  8. 用友 无法正确解析服务器,不能登录到服务器,解析服务端数据出现错误,可能服务端是8.13的先前版本?...

    摘要: 刚刚安装的用友T3财务软件,登录后,基础设置操作正常,但登录总账模块时提示:不能登录到服务器(NHAWM),请检查服务器配置:FAILED:解析服务端数据出现错误,可能服务端是8.13的先前版 ...

  9. 用友 无法正确解析服务器,用友T3提示不能登录到服务器:解析服务端数据出现错误,可能服务端是8.13的先前版本?...

    文章摘要:问题现象:第1种情况:登录的时候就直接提示:不能登录到服务器:pc-pcfailed:解析服务端数据出现错误,可能服务端是8.13的先前版本,第二种情况:登录用友T3软件后,点击模块提示:检 ...

最新文章

  1. 小学毕业能学php吗,将来没出息的娃,多半从小就有这些缺点,小学毕业前还不改就晚了...
  2. Redis与RabbitMQ作为消息队列的比较
  3. Fireflow 终于发布啦!
  4. 台积电5nm生产线污染原因查明:不影响A15芯片量产
  5. erp服务器维护数据备份,erp服务器备份
  6. 双目测距(五)--匹配算法对比
  7. python二进制文件读写文件_Python二进制文件读写
  8. 对数坐标归一化_数据归一化处理方法 数据处理之标准化/归一化方法
  9. delphi教程 | 第一个程序
  10. 解决svn文件图标不显示
  11. linux界面程序崩溃,Linux 下安装anjuta程序运行崩溃 只能用glade做界面
  12. lenovo thinkpad t460s opensuse linux 下禁用多点触控屏
  13. Android 中的 NDK 到底是什么?(详细解析+案例实战)
  14. c#机器人聊天软件_C#winForm 聊天只能机器人(完整版)
  15. Intellij IDEA使用(一)—— 安装Intellij IDEA(ideaIU-2017.2.3)并完成Intellij IDEA的简单配置
  16. 先验概率跟后验概率(通俗易懂)
  17. JSP四大作用域,九大内置对象
  18. kubernetes容灾备份工具velero
  19. 【中间件】RabbitMQ入门学习笔记
  20. Android Studio 开发(二)问题

热门文章

  1. 【转】解密“设计模式”
  2. 使用VB.NET加快代码开发速度
  3. 简单几步写一个laravel扩展包
  4. 在 Linux 中查看时区
  5. 2015级C++第14周实践项目 模板
  6. Espresso小试
  7. Forefront_TMG_2010-TMG发布Web服务器
  8. C++中关于流的概念
  9. swift3.0友盟分享
  10. LaTeX - 带圈数字