每日灵魂一问-对WebSocket的理解?应用场景?

Posted NANA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日灵魂一问-对WebSocket的理解?应用场景?相关的知识,希望对你有一定的参考价值。

是什么

WebSocket,是一种网络传输协议
可在单个TCP连接上进行全双工通信
服务器与客户端都能主动的向对方发送或接受数据

特点

1.全双工
2.二进制帧
3.协议名
引入ws和wss分别代表明文和密文的websocket协议
4.握手:要有一个握手过程

格式

客户端发送的格式

GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket // 必须设置Websocket,表示希望升级到Websocket协议 
Connection: Upgrade //必须设置Upgrade,表示客户端希望连接升级
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== // 客户端发送的一个 base64 编码的密文,用于简单的认证秘钥
Origin: http://example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13 // 持的Websocket版本

服务端返回的数据格式:

HTTP/1.1 101 Switching Protocols // 表示服务端接受 WebSocket 协议的客户端连接
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=Sec- //验证客户端请求报文 把请求头里“Sec-WebSocket-Key”的值,加上一个专用的 UUID
WebSocket-Protocol: chat

优点

1.较少的控制开销, 数据包头部协议较小, 不同于http每次请求需要携带完整的头部
2.更强的实时性
3.保持创连接状态 创建通信后,可省略状态信息
4.更好的二进制支持
5.支持扩展:用户可以扩展websocket协议、实现部分自定义的子协议
6.更好的压缩效果,提高压缩率

应用场景

实时场景:弹幕 媒体聊天 协同编辑

以上是关于每日灵魂一问-对WebSocket的理解?应用场景?的主要内容,如果未能解决你的问题,请参考以下文章

每日灵魂一问-说说你对Node.js 的理解?优缺点?应用场景?

每日灵魂一问- Node 中 Buffer 的理解

每日灵魂一问nodejs-eventEmitte是啥?手动实现

每日灵魂一问-关于react

每日灵魂一问-继承的6种方法(下)

每日灵魂一问-继承的6种方法(上)