博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
websocket替代方案_结合融云 WebSDK 了解 WebSocket 基本原理
阅读量:5322 次
发布时间:2019-06-14

本文共 1052 字,大约阅读时间需要 3 分钟。

结合融云 WebSDK 了解 WebSocket 基本原理

近期使用融云开发聊天页面, 通过抓包, 发现融云 SDK 使用 WebSocket 实现与服务端通讯, 因此简单了解 WebSocket 的实现原理

融云 SDK 文档: https://docs.rongcloud.cn/v4/

WebSocket 与 HTTP

1、HTTP 协议没有为了 WebSocket 的出现改变

2、WebSocket 属于 HTTP 之后的新协议

3、两者有交集, 也各有不同

4、WebSocket 借用 HTTP 协议完成一部分握手

WebSocket 握手

通过抓包融云 WebSocket 请求, 重点关注以下几个字段

d1d6988c12a07e8dd66d1b4233dc1a42.png

以上为发起 WebSocekt 请求抓包, 首先关注比 HTTP 多出的数值:

// 告知服务器, 发起的是 WebSocket 协议, 服务需进行 WebSocket 处理Upgrade: websocketConnection: UpgradeSec-WebSocket-Key: aI0TsvW7jltfmNOF+1eSqg== // Base64, 浏览器随机生成. 与后面服务端响应的 Sec-WebSocket-Accept 配套, 提供基本的防护. 比如恶意的连接, 或者无意的连接Sec-WebSocket-Version: 13 // 表示 websocket 的版本. 如果服务端不支持该版本, 需要返回一个 Sec-WebSocket-Versionheader, 里面包含服务端支持的版本号

再查看 Response Headers:

6c3db81c20b904da3e1a95d24800fc2c.png
Sec-WebSocket-Accept: OfEosYlCAcvV/jdwbW33VU0B50k= // 安全验证. 根据客户端请求首部 Sec-WebSocket-Key 计算 ( base64(sha1($Sec-WebSocket-Accept,'258EAFA5-E914-47DA-95CA-C5AB0DC85B11')) )// 告知客户端, 已成功升级为 WebSocketUpgrade: websocketConnection: Upgrade

替代方案

浏览器没有完美替代 WebSocket 的方案. 只能用 ajax 轮询长轮训(long poll) 模拟, 两者都有性能问题且耗费资源

ajax 轮询、长轮训说明: https://zhuanlan.zhihu.com/p/25690011

转载地址:http://wihhv.baihongyu.com/

你可能感兴趣的文章
类型自行判定转化函数
查看>>
01-Foundation中的结构体
查看>>
两个字符串中最大相同子串
查看>>
阿里云配置
查看>>
c#使用Microsoft Excel 12.0 object Libary导出的Excel文件office2003不能打开!!~~(分享)...
查看>>
WPF DataGrid 之数据绑定--实例2
查看>>
两人合作的案例and周记
查看>>
常用资料库
查看>>
将SQLServer结果导出为excel文件
查看>>
深入浅出SharePoint——利用jQuery访问SharePoint Web Service获取用户信息
查看>>
Android 网络通信框架Volley简介(Google IO 2013)
查看>>
搭建SSM框架SpringMVC之JSON传数据
查看>>
SaltStack入门篇(四)之深入理解SaltStack远程执行
查看>>
JVM家族史考【转】
查看>>
WPF-编程问题和解决
查看>>
Android Studio 查看手机CPU信息
查看>>
00-自测5. Shuffling Machine
查看>>
牛客练习赛25 C 再编号
查看>>
『 学习笔记 』网络最大流
查看>>
http请求415错误Unsupported Media Type
查看>>