是什么
WebSocket,是一种网络传输协定
可在单个TCP连贯上进行全双工通信
服务器与客户端都能被动的向对方发送或承受数据
特点
1.全双工
2.二进制帧
3.协定名
引入ws和wss别离代表明文和密文的websocket协定
4.握手:要有一个握手过程
格局
客户端发送的格局
GET /chat HTTP/1.1Host: server.example.comUpgrade: websocket // 必须设置Websocket,示意心愿降级到Websocket协定 Connection: Upgrade //必须设置Upgrade,示意客户端心愿连贯降级Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== // 客户端发送的一个 base64 编码的密文,用于简略的认证秘钥Origin: http://example.comSec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 13 // 持的Websocket版本
服务端返回的数据格式:
HTTP/1.1 101 Switching Protocols // 示意服务端承受 WebSocket 协定的客户端连贯Upgrade: websocketConnection: UpgradeSec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=Sec- //验证客户端申请报文 把申请头里“Sec-WebSocket-Key”的值,加上一个专用的 UUIDWebSocket-Protocol: chat
长处
1.较少的管制开销, 数据包头部协定较小, 不同于http每次申请须要携带残缺的头部
2.更强的实时性
3.放弃创连贯状态 创立通信后,可省略状态信息
4.更好的二进制反对
5.反对扩大:用户能够扩大websocket协定、实现局部自定义的子协定
6.更好的压缩成果,进步压缩率
利用场景
实时场景:弹幕 媒体聊天 协同编辑