短连接、长连接、轮询、长轮询、WebSocket
短连接
建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接
定义:短连接是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。
应用场景:WEB网站的http服务一般都用短连接(http 1.0一般就指短连接)
优点:1.不需要长期占用通道,对于业务频率不高的场合,能节省通道的使用。
2.短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。
缺点:需要在每次发送业务时,都要建立一次连接,在TCP的建立和关闭操作上浪费较多时间和带宽。
长连接
建立连接——数据传输...(保持连接)...数据传输——关闭连接
定义:长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。使用情景:client向server发起连接,server接受client连接,双方建立连接,client与server完成一次请求后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。
应用场景:频繁访问数据库的连接用长连接(多用于操作频繁,点对点的通讯,而且连接数不能太多情况,smtp,pop3,telnet这种就可以认为是长连接)
优点:省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户端适合使用长连接。
缺点:client端一般不会主动关闭连接,当client与server之间的连接一直不关闭,随着客户端连接越来越多,server会保持过多连接,增加服务器开销。
轮询
定义:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。
应用场景:适于小型应用。
优点:端程序编写比较容易。
缺点:请求中有大半是无用,浪费带宽和服务器资源。
长轮询
定义:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。
应用场景:WebQQ、Hi网页版、Facebook IM。
优点:在无消息的情况下不会频繁的请求。
缺点:服务器hold连接会消耗资源。
WebSocket
定义:
应用场景:社交聊天/会议、弹幕、在线网游、智能家居、实时应用
优点:浏览器不需要不断的向服务器发出请求,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。
缺点:不兼容低版本的IE。