websocket协议实现
2024-10-08 11:15:17
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协议。此时就可以进行全双工双向通信了。
最新文章
- 文本深度表示模型Word2Vec
- [MetaHook] BaseUI hook
- u-boot 2011.09 开启debug 调试
- 【转】分析Linux和windows动态库
- poj 1300 Door Man 欧拉回路
- Codeforces Round #224 (Div. 2)
- CSS背景颜色、背景图片、平铺、定位、固定
- 学习okhttp wiki--Connections.
- 新建一个MVCProject 项目
- 介绍一款Android小游戏--交互式人机对战五子棋
- C++ 文件的复制、删除、重命名
- Redis 学习之持久化机制、发布订阅、虚拟内存
- Levenshtein distance 编辑距离
- Java读书推荐
- nginx的自动化安装和启停脚本
- SpringCloud的Archaius - 动态管理属性配置
- 23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数
- javaweb web.xml文件详解
- linux下把动态链接库加入环境变量的几种方式
- linux-ARM的几个使用指令
热门文章
- AcWing 1027. 方格取数
- C#通过属性名字符串获取、设置对象属性值
- 基于alpine的php-fpm扩展swoole和pdo_mysql
- HDU 2586 ( LCA/tarjan算法模板)
- 基于.NET Core winform的录音、字幕软件HTWCore的技术总结
- CSS的布局之文档流,与行内/块级元素的延伸
- java基础之 数据类型
- C++-HDU1000,1001,1002-格式是真的坑
- 用python脚本测试接口
- 算法_hdoj_1005