简介
- WebSocket是一种在单个TCP连接上进行全双工通信的协议。通过TCP来传输数据
- 在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
- 在WebSocket应用程序中,服务器发布WebSocket端点,客户端使用url连接到服务器。建立连接后,服务器和客户端就可以互相发送消息。客户端通常连接到一台服务器,服务器接受多个客户端的连接。
双全工通信:双工(Full Duplex)是通讯传输的一个术语。通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。全双工指可以同时(瞬时)进行信号的双向传输(A→B且B→A)。
单工:就是在只允许甲方向乙方传送信息,而乙方不能向甲方传送 。
特点
- webSocket的实例是多例的,客户端每创建一个连接,服务端就创建一个实例
- 数据格式比较轻量,性能开销小,通信高效。
- 可以发送文本,也可以发送二进制数据。
- 协议标识符是ws(如果加密,则为wss)
- 较少的控制开销。在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。在不包含扩展的情况下,对于服务器到客户端的内容,此头部大小只有2至10字节(和数据包长度有关);对于客户端到服务器的内容,此头部还需要加上额外的4字节的掩码。相对于HTTP请求每次都要携带完整的头部,此项开销显著减少了。
- 延迟小,连接一旦建立每次的交互,不需要再建立连接而增加时间消耗
协议说明
WebSocket 是独立的、创建在 TCP 上的协议。
Websocket 通过HTTP/1.1 协议的101状态码进行握手。
握手:客户端与服务端建立连接的过程
与http相比较:
http1.1可以建立长连接,但有时间限制
http连接只能客户端发起请求,websocket双方都可以发起请求