浏览器及时感知服务端数据变化的方式
需求
在公司,有一个需求,是浏览器实时获取服务端数据变化,然后根据变化做相应的动作。需求场景如下:手机端扫描二维码,然后获取待取件订单列表,点击取件,进行取件,同时远端打印机打印出取件小票。
技术难点
- 手机端点击取货,浏览器如何感知到,如何做相应的操作(本文要解决的问题)
- 浏览器感知后,如何调用打印服务,进行按照相应的模版打印
技术方案及选型
不断轮询(pull的方式)
所谓不断轮询,就是浏览器保持发送请求,检查服务器是否有新信息返回,服务器对于每次请求均应立即响应。这种方式需要设定合理的时间间隔。例如:邮件客户端可以每隔几分钟检查服务器是否有新邮件。
优点
简单,可靠
局限性
效率不高。如果需要及时获得服务器信息,那么轮询频率就必须非常高,导致服务端压力较大。更适合小型应用。
长轮询(pull的方式)
浏览器发送请求,但是服务器不予以响应,一直到服务器有了新信息才响应客户端。从客户端的角度看它和传统的轮询相同。但从服务器端的角度来看它与传统的轮询相比,减少了服务器端的开销。
例子:网页版聊天工具如webqq(摘抄):
1.用户在网页上发送聊天信息时,网页会给服务器发送请求,服务器将聊天数据存储下来;
2.网页也会向服务器请求对方发送的聊天信息;
3.服务器收到这种请求后,会通过“死循环”等方式阻塞该请求,从而在一定程度上控制住这个连接。“死循环“退出的条件有两种:一是有数据需要响应,此时便立即发送该响应;二是超时,等了很久还是没有数据,服务器不能让客户端无限地等待下去,所以会在超时时间点给客户端发送空的响应;
4.网页处理完响应后再向服务器发送新一轮的请求。
优点
相比不断轮询,性能有了很大提升。
缺点
依然有空的响应。
长连接(push的方式)
通过websocket协议使浏览器和服务器建立一个通道,当服务器有信息变化时,就主动推送一次。
优点
真正实时。
局限性
由于websocket是html5的新特性,浏览器对h5的支持有限,目前chrome,firefox,IE10以上支持。
常见应用场景
扫码登录网页版微信。12306支付时,扫支付宝,会自动回填浏览器用户信息等。
选型
技术选型,并不是技术越高级,越高大上越好,而是看我们的技术,能不能在最短的时间内完成,以最低的成本来支撑业务的正常推进。所以,以上三种方法,根据自己系统的情况来选择,并不能定论哪个方法好,哪个方法不好。
浏览器及时感知服务端数据变化的方式相关推荐
- SSE:使用HTTP做服务端数据推送的技术及其他通信技术
文章目录 一.SSE 使用场景 服务端响应示例 浏览器处理服务器返回数据 SSE使用注意事项 使用示例 二.轮询 三.WebSocket 什么是Socket?什么是WebSocket? 那么他是如何建 ...
- bootstraptable 加载完成_bootstrap table onLoadSuccess加载服务端数据成功事件
bootstrap table onLoadSuccess加载服务端数据成功事件 bootstrap table onLoadSuccess加载服务端数据成功的事件,该事件的作用是什么呢?服务端返回自 ...
- [react] 怎样使用Hooks获取服务端数据?
[react] 怎样使用Hooks获取服务端数据? import React, { useState, useEffect } from 'react'; import axios from 'axi ...
- Vue与服务端数据交互 [ axios ]
Vue生命周期 每个Vue实例在被创建到销毁要经过一系列的过程,这整个过程称为Vue实例的生命周期 Vue在生命周期不同的阶段点会自动运行一些函数, 这些函数称为Vue生命周期的钩子(hook)函数 ...
- 服务器怎么查服务端数据
通常情况下,在做性能测试的时候,我们需要关注的点有这些: 服务端处理能力(并发量.qps.响应时间等): 服务端机器性能数据(程序内存占用.cpu占用.网络带宽占用等): 异常请求信息(如服务端返回5 ...
- 【工作记录】网易云信最近联系人中加入本地服务端数据
网易云信最近联系人中加入本地服务端数据 1.实现效果如下(语音聊天中) 2.实现思路: 特定情况下: 1.获取聊天列表(最近联系人中id) 2.根据id,请求所有人的情况 3.刷新列表 3.具体实现: ...
- t3畅捷通显示不能登陆服务器,用友T3提示不能登录到服务器:解析服务端数据出现错误,可能服务端是8.13的先前版本?...
文章摘要:问题现象:第1种情况:登录的时候就直接提示:不能登录到服务器:pc-pcfailed:解析服务端数据出现错误,可能服务端是8.13的先前版本,第二种情况:登录用友T3软件后,点击模块提示:检 ...
- 用友 无法正确解析服务器,不能登录到服务器,解析服务端数据出现错误,可能服务端是8.13的先前版本?...
摘要: 刚刚安装的用友T3财务软件,登录后,基础设置操作正常,但登录总账模块时提示:不能登录到服务器(NHAWM),请检查服务器配置:FAILED:解析服务端数据出现错误,可能服务端是8.13的先前版 ...
- 用友 无法正确解析服务器,用友T3提示不能登录到服务器:解析服务端数据出现错误,可能服务端是8.13的先前版本?...
文章摘要:问题现象:第1种情况:登录的时候就直接提示:不能登录到服务器:pc-pcfailed:解析服务端数据出现错误,可能服务端是8.13的先前版本,第二种情况:登录用友T3软件后,点击模块提示:检 ...
最新文章
- 小学毕业能学php吗,将来没出息的娃,多半从小就有这些缺点,小学毕业前还不改就晚了...
- Redis与RabbitMQ作为消息队列的比较
- Fireflow 终于发布啦!
- 台积电5nm生产线污染原因查明:不影响A15芯片量产
- erp服务器维护数据备份,erp服务器备份
- 双目测距(五)--匹配算法对比
- python二进制文件读写文件_Python二进制文件读写
- 对数坐标归一化_数据归一化处理方法 数据处理之标准化/归一化方法
- delphi教程 | 第一个程序
- 解决svn文件图标不显示
- linux界面程序崩溃,Linux 下安装anjuta程序运行崩溃 只能用glade做界面
- lenovo thinkpad t460s opensuse linux 下禁用多点触控屏
- Android 中的 NDK 到底是什么?(详细解析+案例实战)
- c#机器人聊天软件_C#winForm 聊天只能机器人(完整版)
- Intellij IDEA使用(一)—— 安装Intellij IDEA(ideaIU-2017.2.3)并完成Intellij IDEA的简单配置
- 先验概率跟后验概率(通俗易懂)
- JSP四大作用域,九大内置对象
- kubernetes容灾备份工具velero
- 【中间件】RabbitMQ入门学习笔记
- Android Studio 开发(二)问题