websocket协议实现

Posted 木林森__

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了websocket协议实现相关的知识,希望对你有一定的参考价值。

# websocket协议实现

1.抓包

wireshark规则: tcp.port == 9000

2. 结果解析

客户端请求:

GET /ws/test_2 HTTP/1.1
Host: localhost:9000
Connection: Upgrade
Upgrade: websocket
Origin: http://192.168***:9000
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: t55Td8j76+BHL9vRhPFXCQ==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits

服务器响应:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: 4rAk+P4vM9mrrpKOiDCDSYQpXPA=

释义:

  • Connection:Connection必须设置为Upgrade,表示客户端希望连接升级
  • Upgrade:Upgrade必须设置为WebSocket,表示在取得服务器响应之后,使用HTTP升级将HTTP协议转换(升级)为WebSocket协议。
  • Sec-WebSocket-key:随机字符串,用于验证协议是否为WebSocket协议而非HTTP协议
  • Sec-WebSocket-Version:表示使用WebSocket的哪一个版本。
  • Sec-WebSocket-Accept:根据Sec-WebSocket-Accept和特殊字符串计算。验证协议是否为WebSocket协议。
  • Sec-WebSocket-Location:与Host字段对应,表示请求WebSocket协议的地址。
  • HTTP/1.1 101 Switching Protocols:101状态码表示升级协议,在返回101状态码后,HTTP协议完成工作,转换为WebSocket协议。此时就可以进行全双工双向通信了。

以上是关于websocket协议实现的主要内容,如果未能解决你的问题,请参考以下文章

Go语言实现的WebSocket

Websocket入门

Go语言实现WebSocket协议

WebSocket 实现服务端给客户端推送消息

前端即时通信是怎么开发的?

WebSocket协议探究:MQTT子协议