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

本文探讨了浏览器实时获取服务端数据变化的需求,分析了不断轮询、长轮询和长连接(WebSocket)三种技术方案的优缺点及应用场景。在不断轮询中,虽然简单可靠但效率较低;长轮询减少了服务器开销,但仍有空响应问题;长连接通过WebSocket实现真正的实时性,但浏览器兼容性有限。选型时应根据实际业务和技术成本综合考虑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求

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

技术难点

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

技术方案及选型

不断轮询(pull的方式)

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

优点

简单,可靠

局限性

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

长轮询(pull的方式)

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

优点

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值