What
websocket是基于TCP的一种新的协议。webSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符。它实现了浏览器与服务器全双工(full-duplex)通信。其本质是保持TCP连接,在浏览器和服务端通过Socket进行通信。
websocket协议与HTTP协议有交集,不是全部。
Html5是指新的API,新技术。Http协议本身只有1.0,1.1,与Html本身没有直接关系。
Why
Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说。
- Http: socket实现,单工通道(浏览器只发起,服务端只做响应),短连接,请求响应
- Websocket:socket实现,双工通道,请求响应,推送。socket创建连接,不断开
How
服务端:
1 服务端开启socket,监听IP和端口
3 允许连接
5 服务端接收到特殊值【加密sha1,特殊值,migic string=“258EAFA5-E914-47DA-95CA-C5AB0DC85B11”】
6 加密后的值发送给客户端
客户端:
2. 客户端发起连接请求(IP和端口)
4 客户端生成一个xxx,【加密sha1,特殊值,migic string=“258EAFA5-E914-47DA-95CA-C5AB0DC85B11”】,向服务端发送一段特殊值
7 客户端接收到加密的值
migic string值固定
原理对比:
ajax轮询:浏览器隔个几秒就发送一次请求,询问服务器是否有新信息。