WebSocket详析

什么是WebSocket

WebSocket 是一种网络通信协议,很多高级功能都需要它

它最大的优势就在于,可以实现基于HTTP协议的全双工通信.HTTP协议虽然应用十分广泛,但是却有一个缺点,就是只能由客户端发起连接, 不能让服务端主动推送信息.如果要实现"推送",只能在客户端上进行轮询,但是轮询的效率非常低,所以WebSocket这样的协议就应运而生.

它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

基本上来说,是一个持久化的协议,在断开之前,可以一直进行通信.

WebSocket发起过程

WebSocket发起过程

WebSocket使用HTTP协议进行握手,在握手阶段,向服务器发起这样的HTTP请求

GET /ws 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: http://example.com

其中,

Upgrade: websocket
Connection: Upgrade

表示告诉服务器需要发起WebSocket连接

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

表示发起连接的元信息.

服务器的响应如下:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat

其流程图如下

Websocket服务端设计

在这里WebSocket服务端用到的技术栈有Netty.运行Netty的Websocket服务器和Http服务器.

其交互逻辑如下:

# Java  Websocket 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×