websocket 协议简述

WebSocket 是一种网络通信协议,RFC 6455 定义了它的通信标准,属于服务器推送技术的一种

由于 HTTP 无状态、无连接、单向通信的特性,导致 HTTP 协议无法实现服务器主动向客户端发起消息,服务端的状态变化无法即时通知到客户端

WebSocket 连接允许客户端与服务端之间进行全双工通信,只需要一次建立连接就可以一直保持状态,避免了多次 HTTP 连接造成的浪费

在这里插入图片描述

基于多线程或多进程的服务器无法适用于 WebSocket ,因为它旨在打开连接,尽可能快的处理请求,然后关闭连接。任何实际的 WebSockets 服务端都需要实现一个异步服务器

简述

  • WebSocket 兼容 HTTP ,默认端口也是 80 和 443,握手阶段采用 HTTP 协议
  • 协议标识符是 ws (如果加密则为 wss),服务器网址就是 URL

在这里插入图片描述
WebSocket 握手

Client request

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

在 HTTP 的请求 header 中增加如下字段,表示发起的是 WebSocket 协议

Upgrade: websocket
Connection: Upgrade

另外这几个字段分别表示

Sec-WebSocket-Key base 64 编码的随机值,用于防止代理 server cache 重新发送 WebSocket 请求
Sec-WebSocket-Protocol 用户定义的串,表示所请求的服务
Sec-WebSocket-Version 协议版本

Server response

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

连接建立成功,切换至 WebSocket 协议
Sec-WebSocket-Accept:经过服务器确认,加密后的 Sec-WebSocket-Key

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值