前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >轮询、长轮询、长连接、websocket

轮询、长轮询、长连接、websocket

作者头像
用户1214487
发布于 2018-03-28 06:42:35
发布于 2018-03-28 06:42:35
9.6K00
代码可运行
举报
文章被收录于专栏:PythonPython
运行总次数:0
代码可运行

 Web端即时通讯技术:即时通讯技术简单的说就是实现这样一种功能:服务器端可以即时地将数据的更新或变化反应到客户端,例如消息即时推送等功能都是通过这种技术实现的。但是在Web中,由于浏览器的限制,实现即时通讯需要借助一些方法。这种限制出现的主要原因是,一般的Web通信都是浏览器先发送请求到服务器,服务器再进行响应完成数据的现实更新。

  实现Web端即时通讯的方法:实现即时通讯主要有四种方式,它们分别是轮询、长轮询(comet)、长连接(SSE)、WebSocket。它们大体可以分为两类,一种是在HTTP基础上实现的,包括短轮询、comet和SSE;另一种不是在HTTP基础上实现是,即WebSocket。下面分别介绍一下这四种轮询方式,以及它们各自的优缺点。

①轮询

  短轮询的基本思路就是浏览器每隔一段时间向浏览器发送http请求,服务器端在收到请求后,不论是否有数据更新,都直接进行响应。这种方式实现的即时通信,本质上还是浏览器发送请求,服务器接受请求的一个过程,通过让客户端不断的进行请求,使得客户端能够模拟实时地收到服务器端的数据的变化。

  这种方式的优点是比较简单,易于理解,实现起来也没有什么技术难点。缺点是显而易见的,这种方式由于需要不断的建立http连接,严重浪费了服务器端和客户端的资源。尤其是在客户端,距离来说,如果有数量级想对比较大的人同时位于基于短轮询的应用中,那么每一个用户的客户端都会疯狂的向服务器端发送http请求,而且不会间断。人数越多,服务器端压力越大,这是很不合理的。

  因此短轮询不适用于那些同时在线用户数量比较大,并且很注重性能的Web应用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var xhr = new XMLHttpRequest();
    setInterval(function(){
        xhr.open('GET','/user');
        xhr.onreadystatechange = function(){

        };
        xhr.send();
    },1000)

②长轮询(comet)

ajax实现:

  当服务器收到客户端发来的请求后,服务器端不会直接进行响应,而是先将这个请求挂起,然后判断服务器端数据是否有更新。如果有更新,则进行响应,如果一直没有数据,则到达一定的时间限制(服务器端设置)才返回。 。 客户端JavaScript响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。

  长轮询和短轮询比起来,明显减少了很多不必要的http请求次数,相比之下节约了资源。长轮询的缺点在于,连接挂起也会导致资源的浪费。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   function ajax(){
        var xhr = new XMLHttpRequest();
        xhr.open('GET','/user');
        xhr.onreadystatechange = function(){
              ajax();
        };
        xhr.send();
    }

轮询与长轮询都是基于HTTP的,两者本身存在着缺陷:轮询需要更快的处理速度;长轮询则更要求处理并发的能力;两者都是“被动型服务器”的体现:服务器不会主动推送信息,而是在客户端发送ajax请求后进行返回的响应。而理想的模型是"在服务器端数据有了变化后,可以主动推送给客户端",这种"主动型"服务器是解决这类问题的很好的方案。Web Sockets就是这样的方案。

③长连接(SSE)

  SSE是HTML5新增的功能,全称为Server-Sent Events。它可以允许服务推送数据到客户端。SSE在本质上就与之前的长轮询、短轮询不同,虽然都是基于http协议的,但是轮询需要客户端先发送请求。而SSE最大的特点就是不需要客户端发送请求,可以实现只要服务器端数据有更新,就可以马上发送到客户端。

  SSE的优势很明显,它不需要建立或保持大量的客户端发往服务器端的请求,节约了很多资源,提升应用性能。并且后面会介绍道,SSE的实现非常简单,并且不需要依赖其他插件。

④WebSocket

  WebSocket是Html5定义的一个新协议,与传统的http协议不同,该协议可以实现服务器与客户端之间全双工通信。简单来说,首先需要在客户端和服务器端建立起一个连接,这部分需要http。连接一旦建立,客户端和服务器端就处于平等的地位,可以相互发送数据,不存在请求和响应的区别。

  WebSocket的优点是实现了双向通信,缺点是服务器端的逻辑非常复杂。现在针对不同的后台语言有不同的插件可以使用。

http://www.cnblogs.com/huchong/p/8530067.html

四种Web即时通信技术比较

  从兼容性角度考虑,短轮询>长轮询>长连接SSE>WebSocket;

  从性能方面考虑,WebSocket>长连接SSE>长轮询>短轮询。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
15 条评论
热度
最新
b64
b64
回复回复点赞举报
b64
b64
回复回复点赞举报
b64
b64
回复回复点赞举报
b64
b64
回复回复点赞举报
b64
b64
回复回复点赞举报
b64
b64
回复回复点赞举报
b64
b64
回复回复点赞举报
b64
b64
回复回复点赞举报
b64
b64
回复回复点赞举报
b64
b64
回复回复点赞举报
加载更多
推荐阅读
这可能是你见过最详细的PowerBI显示图片方法综述
当然,我们更希望的是能够根据数据表显示多张图片,比如制作产品销售情况可视化的时候,一边显示产品图片,一边显示销售数量。有两个常用的控件可以实现这个效果。一个是原生默认的表格控件,一个是第三方的CardBrowser控件。要显示图片,只需增加一个图片URL的字段即可。URL,通俗来讲就是网址。拖入表格之前,需要把该字段的属性设置为图片URL。如下图所示:
btharp
2021/08/31
4.8K0
【控件说明】--盘点PowerBI那些显示图片的控件
话说上回,我给大家开发了一款助于显示本地图片的压缩和转码工具。该工具干了2件事:首先是转码,将图片转为base64码,PowerBI(PBI)可以直接读取并显示成图片。另一件更为关键——解决了图片压缩问题,单纯的图片转码,往往会因为图片本身过大(几十k以上就过大了),导致PBI图片显示不全或干脆不显示。
btharp
2021/08/31
2.1K0
如何将本地图片在PowerBI中展示呢?
文件夹中有一些公司最近的照片,为了展示团队的风采,我准备把它们在PowerBI中用Simple image做成幻灯片,再用Play Axis自动播放。
陈学谦
2020/05/16
2.4K0
3.28 PowerBI报告可视化-Organization Chart:带图片的组织架构图(含Base64图片制作)
加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。
PowerBI自己学_轻松
2025/02/26
1390
3.28 PowerBI报告可视化-Organization Chart:带图片的组织架构图(含Base64图片制作)
Power BI 表格加载图片注意事项
jpg、png等常见格式的URL,SVG编码,本地照片转BASE64编码。URL通常表现为:
wujunmin
2025/02/10
860
Power BI 表格加载图片注意事项
[Qt] 基于 Qt 的文件选择与图片显示功能实现
在这篇博客中,我们将带领 Qt 的初学者一步步实现一个简单的图片选择与显示功能,并逐渐优化代码,从最基础的版本开始,逐步添加更多的功能。本文中使用了 Qt 中多个重要的类和函数,例如 QFileDialog、QSettings、QPixmap 等。文章为每个版本的实现进行详细讲解,帮助更好地理解 Qt 的使用。
DevKevin
2024/10/06
4820
Power BI批量导入本地图片最佳方式
Power BI擅长批量导入网络图片,本地图片总会遇到这样那样的问题。而批量导入本地图片又是一个刚需:
wujunmin
2021/09/07
2K0
Power BI批量导入本地图片最佳方式
图片转Base64工具2.0
3年前,我开发了一款批量压缩图片并转成base64文本的工具。转换的结果可用于Power BI直接读取,显示本地文件。详见这篇推文:
btharp
2023/09/01
4452
图片转Base64工具2.0
PowerBI 大型全自动图片库终极解决方案
经过实际测试,多达数百兆的图片资源,只需 20 秒不到,就可以全部加载到 Power BI 中供使用。
BI佐罗
2022/07/07
1.5K0
PowerBI 大型全自动图片库终极解决方案
vue如何动态加载本地图片
大家好,我是前端队长Daotin,想要获取更多前端精彩内容,关注我(全网同名),解锁前端成长新姿势。
Daotin
2021/07/28
4.3K0
【第3版emWin教程】第23章 emWin6.x的PNG图片显示
教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第23章 emWin6.x的PNG图片显示 本期主要讲emW
Simon223
2021/07/08
6910
如何批量导入1000张缩略图到 PowerBI 做图片目录
但有的时候,我们不希望企业内部的图片暴露在网络中,最好可以内置在 Power BI 中,这可以实现吗?
BI佐罗
2022/07/07
1.5K0
如何批量导入1000张缩略图到 PowerBI 做图片目录
图片折腾的经历——文件批处理、爬虫、图片工具
这个工具使用很简单,应该稍微看一下就能上手使用了,可以采集某个视频作者的全部作品,包括图集,具体就不多介绍。
不愿意做鱼的小鲸鱼
2022/11/03
7530
图片折腾的经历——文件批处理、爬虫、图片工具
微信小程序——图片识别
课程大作业的目的是:运用在本次课程中学到的知识来指导实践,了解程序设计其实现方法,学会解决实际问题。掌握微信小程序设计的具体步骤与基本方法,针对选定的程序做调研分析。通过课程大作业,提高实践动手技能,培养独立分析分析问题和解决问题的能力。 课程大作业的要求:本次课程大作业的选题比较灵活,可以是自主选题,也可以参考课本中的案例自行修改完善,题目要符合课程大作业的要求,并且具备一定的水平和深度。
全栈程序员站长
2022/09/07
5.5K0
Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果
今天我的这篇文章使用的是LruCache这个类(之前写了一篇使用LruCache加载网络图片的Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅)以及对图片进行相对应的裁剪,这样也可以尽量的避免OOM的发生,我们先看下微信的效果吧
Java架构师必看
2021/05/21
3.7K0
Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果
解决java中html转word文档,转成功后的word文档在断网情况下无法显示图片问题「建议收藏」
前一段时间遇到一个问题,就是将html转成word文档,里面有图片,表格,和各种形式的文字。刚开始的做法是将html代码取出来,然后以留的形式进行保存,后缀名为.doc。当我转成之后发现一切完美,但是图片出现了问题:
全栈程序员站长
2022/11/07
5.9K0
解决java中html转word文档,转成功后的word文档在断网情况下无法显示图片问题「建议收藏」
nginx解决图片显示过慢,或者不显示
经过一系列的排查(中间过程我就省略了,直接写重点了!),最终定位到是Nginx的问题。当我打开这位读者的网站后台管理系统,发现图片显示非常慢,在Nginx前端代理上查出如下错误信息。
DencyCheng
2023/02/16
4.8K0
Pyinstaller打包exe附带图片的方法
在最近的wordpress项目中学到了图片字节码可在文件中存在,于是我做了试验并成功了(就是代码里带一堆字节码……)
全栈程序员站长
2022/07/02
2.8K0
Pyinstaller打包exe附带图片的方法
【文末赠书】个人永久性免费-Excel催化剂功能第121波-文件处理新增base64转码及导出文本文件
在Excel催化剂现存在100+功能中,零散分布了大量的文件类操作,在Excel催化剂倡导的搜索+笔记的方式下使用插件,无需死记硬背,真正到使用时,对功能文档及功能菜单进行搜索即可。
Excel催化剂
2021/08/19
1.5K0
【文末赠书】个人永久性免费-Excel催化剂功能第121波-文件处理新增base64转码及导出文本文件
Excel催化剂功能第11波-快速批量插入图片并保留纵横比
原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可能跳转回简书平台上查看。
Excel催化剂
2021/08/19
1.3K0
推荐阅读
相关推荐
这可能是你见过最详细的PowerBI显示图片方法综述
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档