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元
1935 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

420

社区成员

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

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