websocket协议规范

本文详细介绍了WebSocket协议的握手过程、数据帧结构,包括FIN、RSV、Opcode等字段的含义,并提到用VB编写WebSocket客户端的示例,强调了协议规范的重要性。同时,文章提供了协议规范的链接和交流方式。
摘要由CSDN通过智能技术生成

《websocket协议详解》教程分三篇:

  1.  什么是websocket
  2. websocket协议规范
  3.  用vb编写websocket客户端示例(每秒百万弹幕吞吐量)

文章上方有详细的规范、源码链接。邮箱:952125505@qq.com ,QQ交流群:715895604


本文与websocket协议规范有冲突的地方,请以规范为准。(文章上方有websocket中文协议规范的链接)

 

握手

首先由客户端发起连接请求,服务端验证客户端握手数据并返回服务器握手数据,客户端验证服务端握手数据,双方完成握手。

客户端:请求协议升级

首先,客户端发起协议升级请求。(采用标准 HTTP 报文格式,且只支持GET方法。)

GET / HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: [LocalHost:80]
Origin: [LocalIP]
Pragma: no -cache
cache -Control: no -cache
Sec-WebSocket-Key: w4v7O6xFTi36lq3RNcgctw==
Sec-WebSocket-Version: 13
Sec -WebSocket - Extensions: x -webkit - deflate - Frame;permessage-deflate; client_max_window_bits
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.2171.99 Safari/537.36

各参数含义:

  • Connection: Upgrade:表示要升级协议
  • Upgrade: websocket:表示要升级到 websocket 协议。
  • Sec-WebSocket-Version: 13:表示 websocket 的版本。
  • Sec-WebSocket-Key:阻止无效websocket协议连接。

需要指出Sec-WebSocket-Key的生成算法,伪代码:base64编码(16个随机字节)

其它部分没有什么好介绍的,跟http头信息一样,可以查看http相关资料。

服务端:响应协议升级

HTTP/1.1 101 Switching Protocols
Connection:Upgrade
Upgrade: websocket
Sec-WebSocket-Accept: Oy4NRAQ13jhfONC7bP8dTKb4PTU=

返回状态码101表示协议升级成功(从http升级到websocket)。此后,所有的数据都按照websocket协议进行。如果返回其他状态码代表请求失败,必须要关闭连接(不要问为什么,规定)。具体状态码含义可以查看http相关资料。

Sec-WebSocket-Accept用于客户端验证服务器的合法性,如果验证数据不一致,客户端就要关闭连接。伪代码:base64编码(sha1加密( Sec-WebSocket-Key +"258EAFA5-E914-47DA-95CA-C5AB0DC85B11")  ),其中258EAFA5-E914-47DA-95CA-C5AB0DC85B11是固定的,代表websocket全局唯一标识符。 

至此,客户端与服务端已经完成协议升级。

 

数据帧

websocket中,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值