WebSocket原理
WebSocket客户端首先通过HTTP协议发送几个特别的Header到Server,告诉Server我现在是HTTP请求,但我要升级到WebSocket。
Upgrade:websocket
Connection:Upgrade
Sec-WebSocket-Key: XXX
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: XX
只要服务器支持WebSocket协议(Tomcat7、Jetty7之后都是支持WebSocket的),那么服务端收到请求且建立连接成功后会返回Sec-WebSocket-Accept
、Sec-WebSocket-Protocol
这两个header给客户端,且Http Status为101表示协议切换成功,这样客户端和服务端只要任意一方没有断开连接,就可以基于这一条通路进行通讯了。
WebSocket相比长轮询、短轮询做到了真正的实时且大量节省带宽资源。
短轮询
客户端设置每过多少秒向服务器端去请求最新的数据。
长轮询
短轮询的缺陷是无效请求过多,并且请求的头部数据量占了大部分,真正的请求信息几乎很少,这样就会造成资源浪费。
可以看到,长轮询可以避免过多的无效请求。可是将请求挂起会占用服务器资源。服务器对HTTP请求也是有数量限制的。
websocket具体应用
等待~