轮询和长轮询_http长轮询
轮询:说白了就是客户端定时去请求服务端, 是客户端主动请求来促使数据更新;
长轮询:说白了也是客户端请求服务端,但是服务端并不是即时返回,而是当有内容更新的时候才返回内容给客户端,从流程上讲,可以理解为服务器向客户端推送内容;
从中可以看出区别:
轮询:
1:大量耗费服务器内存和宽带资源,因为不停的请求服务器,很多时候 并没有新的数据更新,因此绝大部分请求都是无效请求
2:数据不一定是实时更新,要看设定的请求间隔,基本会有延迟。
长轮询:
1:解决了轮询的两个大问题,数据实时更新;
2:唯一的缺点是服务器在挂起的时候比较耗内存;
web通信中的 长连接 长轮询
基于HTTP的长连接,是一种通过长轮询方式实现“服务器推”的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性。
什么是长连接、长轮询?
简单点就是客户端不停的向服务器发送请求以后去最新的数据信息。这里的 ‘不停’ 其实是有停止的。只是我们人眼无法分辨是否停止,它只是一种快速的停下然后立即开始连接而已。
应用场景
长连接、长轮询一般应用与webIM、ChatRoom和一些需要及时交互的网站应用中。web版微信二维码 webQQ HI网页版,Facebook IM等
优缺点
轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。 优点:后端程序编写比较容易。 缺点:请求中有大半是无用,浪费带宽和服务器资源。 实例:适于小型应用。
长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。 优点:在无消息的情况下不会频繁的请求,耗费资源小。 缺点:服务器hold连接会消耗资源,返回数据顺序无保证,难于管理维护。 实例:WebQQ、Hi网页版、Facebook IM。
长连接:在页面里嵌入一个隐蔵iframe,将这个隐蔵iframe的src属性设为对一个长连接的请求或是采用xhr请求,服务器端就能源源不断地往客户端输入数据。 优点:消息即时到达,不发无用请求;管理起来也相对方便。 缺点:服务器维护一个长连接会增加开销。 实例:Gmail聊天
Flash Socket:在页面中内嵌入一个使用了Socket类的 Flash 程序JavaScript通过调用此Flash程序提供的Socket接口与服务器端的Socket接口进行通信,JavaScript在收到服务器端传送的信息后控制页面的显示。 优点:实现真正的即时通信,而不是伪即时。 缺点:客户端必须安装Flash插件;非HTTP协议,无法自动穿越防火墙。 实例:网络互动游戏。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168257.html原文链接:https://javaforall.cn
相关文章
- Apache 模块 mod rewrite RewriteCond 通过检查HTTP REFERER避免
- WEB/HTTP服务器搭建[通俗易懂]
- ajax怎么解决报414,关于c#:HTTP错误414。请求URL太长。 asp.net
- Go HTTP 编程 | 01 - 使用 http 包创建 Web 服务器
- http前缀树路由算法和Go源码分析
- HTTP默认端口_http协议使用的端口号
- HTTP笔记
- 一个简单的HTTP请求和响应服务-httpbin.org
- HTTP 新增的 103 状态码,这次终于派上用场了!
- 用 Java 自带的 API 实现的超轻量级的 HTTP 服务器详解编程语言
- python模拟http请求详解编程语言
- 服务器一步步教你搭建Linux HTTP服务器(linux搭建http)
- 服务 Linux下检测HTTP服务的方法(linux测试http)
- 服务Linux 下监控HTTP服务的方法(linux监控http)
- Linux下抓取HTTP包的技术实现(linux抓http包)
- Linux shell实现HTTP服务
- 数据库使用HTTP连接Oracle数据库的简单操作(http连接oracle)
- 一步之遥从HTTP访问Oracle数据库(http访问oracle)
- 熟悉Redis,HTTP抓包,防止网络安全漏洞(redis,http抓包)