定义
websocket是一个在单个TCP连接上进行的全双工通信的协议。webSocket通信协议2011年被IETF定为标准,webSocket API被W3C定为标准。
在webSocket API中,浏览器和服务器只需要做一次握手的动作,然后浏览器和服务器之间就形成一条快速通道。两者之间就可以直接进行数据传送了。
基本原理
webSocket的原理其实就是:HTTP握手 + TCP数据传送
WebSocket和HTTP:
两者都属于应用层协议,都通过TCP协议进行数据传输。webSocket是全双工的通信协议,http是单向的通信协议。
对于websocket来说,必须依赖http协议进行一次握手,握手成功,直接从tcp通道进行数据传送,从此与http就无关了
握手和传输过程:
- 浏览器首先向服务器发起一个HTTP请求,然后等待服务器响应。这个通常和http请求有些差别,包含了一些请求信息。
- 服务器解析这些附加的头信息,然后返回握手的响应,告诉浏览器将后续的数据按照websocket的格式发送过来,客户端和服务端的websocket连接就建立起来了。
- 客户端和服务端可以和Socket一样进行有连接的数据通信。
- 这个连接一直会存在,直到浏览器或者服务器一方主动关闭连接。