一、长短轮询
1、短轮询:
客户端向服务器端发起请求,服务器端立即返回相关信息并且关闭链接。同时客户端再次发起请求,与服务器端建立链接。
优点:后端程序的编写简单
缺点:大部分请求是无用的。
2、长轮询
与轮询不同的是服务器端会hold住链接,等待有数据的情况下返回并且关闭连接。
区别:服务器端hold住请求,客户端不会再请求数据。
优点:无消息的情况下不会再次发起请求
缺点: 会耗费服务端的性能
3、总结:
短轮询和长轮询主要是服务器端的实现方式,如果服务器端挂起请求等待消息则实现长轮询,如果服务器端不管任何条件下都返回数据则为短轮询。这种方式可以称之为编程方式实现短轮询和长轮询。
二、长短连接
首先区分概念,HTTP是基于请求/响应模式的无状态协议(属于应用层协议),因此只要服务端做出了反应,则HTTP连接消失。因此,HTTP本身并没有长短连接之分,所以根本没有长短连接这种说法。
TCP是一个双向通道,它可以保持一段时间不关闭。长连接是指TCP连接。
1、短连接
工作模式: 连接->传输数据->关闭连接
客户端每一次与服务器端建立连接后进行一次HTTP操作就关闭请求。
2、长连接
工作模式:连接->传输数据->保持连接->传输数据.......->保持连接->传输数据->关闭连接。
建立连接之后无论是否有数据通信都保持连接状态,存在某种机制可以销毁连接。
3、总结
长短连接是基于协议的,一个TCP连接是否为长连接,是通过设置HTTP的Connection Header来决定的,而且是需要客户端和服务器端都设置才有效。