WebSocket 的实现和应用

131 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

WebSocket 的实现和应用

(1) 什么是 WebSocket?

WebSocket 是 HTML5 中的协议,支持持久连接http 协议不支持持久性连接。Http1.0和 HTTP1.1 都不支持持久性的连接,HTTP1.1 中的 keep-alive,将多个http 请求合并为1 个

(2) WebSocket 是什么样的协议,具体有什么优点?

HTTP 的生命周期通过 Request 来界定,也就是 Request 一个 Response,那么在Http1.0协议中,这次 Http 请求就结束了。

在 Http1.1 中进行了改进,是的有一个connection:Keep-alive,也就是说,在一个 Http 连接中,可以发送多个 Request,接收多个Response。但是必须记住,在 Http 中一个 Request 只能对应有一个 Response,而且这个Response 是被动的,不能主动发起

WebSocket 是基于 Http 协议的,或者说借用了 Http 协议来完成一部分握手,在握手阶段与 Http 是相同的

来看一个 websocket 握手协议的实现,基本是2 个属性,upgrade,connection。 基本请求如下:

GET /chat HTTP/1.1

Host: server.example.com

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==

Sec-WebSocket-Protocol: chat, superchat

Sec-WebSocket-Version: 13

Origin: example.com

多了下面 2 个属性:

Upgrade:webSocket 
Connection:Upgrade

告诉服务器发送的是 websocket:

Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== 
Sec-WebSocket-Protocol: chat, superchat 
Sec-WebSocket-Version: 13