每一年都奔走在自己热爱里

没有人是一座孤岛,总有谁爱着你

WebSocket与HTTP

1. 什么是WebSocket

首先,WebSocket是一种通信协议,区别于HTTP协议,

HTTP协议只能实现客户端请求服务器响应的这种单向通讯,

WebSocket可以实现客户端与服务器的双向通讯。

2. 最大优势

可以做到服务端主动将消息推送给客户端

3. 其余特点

1. 握手阶段采用http协议

2. 数据格式轻量,性能开销小,客户端与服务端进行数据交换时,服务端到客户端的数据包头只有2-10字节,客户端到服务器需要加上另外4字节的掩码。

http每次都要携带完整头部

3. 更好的二进制支持,可以发送文本和二进制数据

4. 没有同源限制,客户端可以与任意服务器进行通信

5. 协议标识符是WS(如果加密,则是WSS),请求的地址就是后端支持WebSocket的API

4. 与服务端实时通信的方法

1. AJAX轮询

2. Long Polling长轮询

(注意:以上俩种缺点:开销大,被动性,并发高的时候服务器压力很大)

3. WebSocket通信

5. 连接过程

客户端发起HTTP握手,告诉服务端进行WebSocket协议通讯,并告知WebSocket协议版本,服务端确定协议版本,升级为WebSocket协议。

之后如果有数据需要推送,会主动推送给客户端。

6. WebSocket API

客户端若想与支持WebSocket的服务器通信,可以使用WebSocket构造函数返回WebSocket对象

const test = new WebSocket("ws://localhost:8080/websocket");

1. WebSocket.onopen: 连接成功后的回调

2. WebSocket.onclose: 连接关闭后的回调

3. WebSocket.onerror: 连接失败后的回调

4. WebSocket.onmessage: 客户端接收到服务端数据的回调

5. webSocket.bufferedAmount: 未发送至服务器的二进制字节数

6. WebSocket.binaryType: 使用二进制的数据类型连接

7. WebSocket.protocol : 服务器选择的下属协议

8. WebSocket.url : WebSocket 的绝对路径

9. WebSocket.readyState: 当前连接状态,对应的四个常量

       WebSocket.CONNECTING: 0

       WebSocket.OPEN: 1

       WebSocket.CLOSING: 2

       WebSocket.CLOSED: 3

7. 方法

1. WebSocket.close() 关闭当前连接

2. WebSocket.send(data) 向服务器发送数据

posted @ 2021-01-15 14:53  helloliyh  阅读(1277)  评论(0编辑  收藏  举报