websocket 原理及ios下的应用

ReyZhang
移动开发领域新星创作者
2023-04-04 16:52:07
  • 一、websocket是什么?
  • 二、websocket有哪些应用场景?
  • 三、websocket底层原理
    • 3.1 握手阶段
    • 3.2 传输阶段
  • 四、websocket 在ios中的相关框架
  • 五、websocket在ios中的简单应用 (SocketRocket 为例)
  • 六、参考

 

一、websocket是什么?

百度百科定义:

WebSocket 是独立的、创建在 TCP 上的协议。
Websocket 通过HTTP/1.1 协议101状态码进行握手。
为了创建Websocket连接,需要通过浏览器发出请求,之后服务器进行回应,这个过程通常称为“握手”(handshaking)

通过上面的定义,我们可以得出一个结论:

WebSocket = “HTTP第1次握手” + 基于TCP协议的“全双工“通讯的网络协议

建立WebSocket连接的过程如下:

  • 首先,通过HTTP协议的第一次握手保证浏览器与服务器连线成功
  • 再者,通过TCP协议实现浏览器与服务器之间的全双工通讯 (通过心跳机制保持连接)

最终,使得“服务端”拥有主动发信息给“客户端”的能力。

二、websocket有哪些应用场景?

最常见的场景之一肯定是: IM即时通讯 。 像:QQ、微信等, 当然仅仅依靠WebSocket肯定不够,各大厂都有自己相应的优化方案

此外还有像 联机游戏、股票/基金等金融交易平台的实时数据刷新、还有协同办公等等

三、websocket底层原理

Websocket是应用层第七层上的一个应用层协议,它必须依赖 HTTP 协议进行一次握手 ,握手成功后,数据就直接从 TCP 通道传输,与 HTTP 无关了。即:websocket分为握手数据传输二个阶段,即进行了HTTP握手 + 双工的TCP连接。

3.1 握手阶段

客户端发送消息:

GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: http://example.com
Sec-WebSocket-Version: 13

服务端返回消息:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

这里值得注意的是Sec-WebSocket-Accept的计算方法:

base64(hsa1(sec-websocket-key + 258EAFA5-E914-47DA-95CA-C5AB0DC85B11))

  • 如果这个Sec-WebSocket-Accept计算错误浏览器会提示:Sec-WebSocket-Accept dismatch
  • 如果返回成功,Websocket就会回调onopen事件

3.2 传输阶段

更多内容请跳转至 https://blog.csdn.net/zhanglei5415/article/details/129881999 阅读

...全文
成就一亿技术人!
拼手气红包 5.00元
1861 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

420

社区成员

发帖
与我相关
我的任务
社区描述
专注移动ios平台的软件开发,多年的一线研发经验,实战经验丰富,只为你呈现有价值的信息。
iosflutterandroid 技术论坛(原bbs) 山东省·青岛市
社区管理员
  • ReyZhang
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧