短轮询:客户端发起请求,服务器不管有无消息都返回信息,结束http链接。而后继续发起请求。
长轮询:客户端发起请求,创建链接,直到服务端返回消息response,结束http链接。而后继续发起请求,重复刚才的动做。
这种作法缺点在于:
短轮询要求服务器有很快的处理速度和资源。长轮询则要求服务器有很高的并发,同时接收多个链接,服务多个链接。
websocket区别于短、长轮询:它只创建一次http链接,创建链接后,服务端可主动向客户端发送消息,而不是客户端发送请求后,服务端才返回消息。
http 的长链接:经过Connection:keep-alive来创建链接,一次tcp链接完成屡次http请求,请求仍须要header,kepp-alive的保持时长在服务端设置。
websocket区别于长链接:一次tcp链接后,双方都可发送数据,不须要header,可随时结束链接。
websocket的工做原理:
客户端发送一次特殊的http请求,在通过 tcp/ip 传输层协议(三次握手)后,应用层http协议升级为websocket协议,进行实际的数据传输。
这个特殊的http请求的头部内容包括Connection:Upgrade Upgrade:websocket,切换到websocket协议(响应状态码 101 表示服务器已经理解了客户端的请求,在发送完这个响应后,服务器将会切换到在Upgrade请求头中定义的那些协议)。websocket使用此机制以兼容的方式与http服务器创建链接。
WebSocket 是一种在单个TCP链接上进行全双工通讯的协议(基于 TCP 的协议)。
Websocket 经过HTTP/1.1 协议的101状态码进行握手(与 HTTP 的惟一关系就是它的握手请求能够做为一个升级请求(Upgrade request)经由 HTTP 服务器解释)。
websocket的通信协议中:客户端发出的数据帧须要进行掩码处理。服务器发送的数据帧则未通过掩码处理。因此若是服务器收到客户端发送的未经掩码处理的数据包,则会自动断开链接;反之,若是客户端收到了服务端发送的通过掩码处理的数据包,也会自动断开链接。