博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
了解轮询、长轮询、长连接、websocket
阅读量:6430 次
发布时间:2019-06-23

本文共 484 字,大约阅读时间需要 1 分钟。

业务开发中我们往往会有一些需要即时通信的场景,比如微信扫码登录、聊天功能。

下面这四种方式都可以实现即时通信。

轮询:

 浏览器通过定时器每隔一段时间向服务器端发送请求,服务器端收到请求并响应请求。没有新消息时依然需要不断轮询,比较消耗资源。

 

长轮询:

  浏览器端设置较长的等待时间,当发送请求之后,服务器在等待时间之内有消息返回,则返回成功,否则,超过等待时间客户端就会自动响应超时并重新发起一个长轮询请求。

  相比短轮询,节约了资源,但是在连接挂起阶段也导致了资源浪费。

(为什么我们项目中,微信扫码登录用了短轮询,时间是500ms,orz。。。)

 

长连接:

不需要客户端先发送请求,服务端可以推送数据到客户端。节约资源,提升应用性能。

(怎么实现?)

 

websocket:

基于http协议在客户端和服务端建立连接,基于websocket实现数据的实时双向通信。

 

兼容性角度:短轮询>长轮询>长连接>websocket

性能角度:短轮询<长轮询<长连接<websocket

 

转载于:https://www.cnblogs.com/yy95/p/9834978.html

你可能感兴趣的文章
offsetLeft, offsetTop以及postion().left , postion().top有神马区别
查看>>
数据库中触发器before与after认识
查看>>
手动露天广场和立方体
查看>>
随机选择
查看>>
【Java并发编程三】闭锁
查看>>
分布式事务中遇到的 “与基础事务管理器的通信失败”的解决方法
查看>>
让你的Git水平更上一层楼的10个小贴士
查看>>
c++ string 之 find_first_not_of 源码
查看>>
mybatis中的#和$的区别
查看>>
ubuntu下搭建NDK环境
查看>>
MessageDigest简单介绍
查看>>
webpack window 使用sass来编译css样式
查看>>
D3 & Data Visualization in Ext JS
查看>>
java通过UUID生成16位唯一订单号
查看>>
001-web基本程序搭建
查看>>
函数指针和指针函数
查看>>
Intel 揭秘:如何在公有云、混合云和私有云间合理放置工作负载
查看>>
借力AI 极验如何构建下一代业务安全?
查看>>
用Python制作迷宫GIF
查看>>
支付宝推出基于区块链跨境支付,巨头入场小企业将面临灭顶之灾
查看>>