http 长轮询 和 短轮询
http 长轮询
1)介绍:http 长轮询是server 收到请求后如果有数据,立刻响应请求;如果没有数据 就会 停留 一段时间,这段时间内,如果 server 请求的数据到达(如查询数据库或数据的逻辑处理完成),就会立刻响应;如果这段时间过后,还没有数据到达,则以空数据的形式响应http请求;若浏览器收到的数据为空,会再次发送同样的http请求到server;
2)http 长轮询 的缺点:server 没有数据到达时,http连接会停留一段时间,这会造成服务器资源浪费;
3)看个荔枝:假设有 1000个人停留在某个客户端页面,等待server端的数据更新,那就很有可能服务器这边挂着1000个线程,在不停检测数据是否发生变化,这依然是有问题的;
http 短轮询
1)介绍:http 短轮询是 server 收到请求 不管是否有数据到达都直接响应http 请求;如果浏览器收到的数据为空,则隔一段时间,浏览器又会发送相同的http请求到server 以获取数据响应;
2) http 短轮询的缺点:消息交互的实时性较低(server端到浏览器端的数据反馈效率低);
http 长轮询 和 短轮询的异同
1)相同点:当server 的数据不可达时,基于http长轮询和短轮询 的http请求,都会 停留一段时间;
2)不同点:http长轮询是在服务器端的停留,而http 短轮询是在 浏览器端的停留;
3)性能总结:从这里可以看出,不管是长轮询还是短轮询,都不太适用于客户端数量太多的情况,因为每个服务器所能承载的TCP连接数是有上限的,这种轮询很容易把连接数顶满;
原文:https://blog.csdn.net/baidu_38990811/article/details/79172163