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协议。此时就可以进行全双工双向通信了。

最新文章

  1. 文本深度表示模型Word2Vec
  2. [MetaHook] BaseUI hook
  3. u-boot 2011.09 开启debug 调试
  4. 【转】分析Linux和windows动态库
  5. poj 1300 Door Man 欧拉回路
  6. Codeforces Round #224 (Div. 2)
  7. CSS背景颜色、背景图片、平铺、定位、固定
  8. 学习okhttp wiki--Connections.
  9. 新建一个MVCProject 项目
  10. 介绍一款Android小游戏--交互式人机对战五子棋
  11. C++ 文件的复制、删除、重命名
  12. Redis 学习之持久化机制、发布订阅、虚拟内存
  13. Levenshtein distance 编辑距离
  14. Java读书推荐
  15. nginx的自动化安装和启停脚本
  16. SpringCloud的Archaius - 动态管理属性配置
  17. 23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数
  18. javaweb web.xml文件详解
  19. linux下把动态链接库加入环境变量的几种方式
  20. linux-ARM的几个使用指令

热门文章

  1. AcWing 1027. 方格取数
  2. C#通过属性名字符串获取、设置对象属性值
  3. 基于alpine的php-fpm扩展swoole和pdo_mysql
  4. HDU 2586 ( LCA/tarjan算法模板)
  5. 基于.NET Core winform的录音、字幕软件HTWCore的技术总结
  6. CSS的布局之文档流,与行内/块级元素的延伸
  7. java基础之 数据类型
  8. C++-HDU1000,1001,1002-格式是真的坑
  9. 用python脚本测试接口
  10. 算法_hdoj_1005