国内作战指挥学院毕业的程序员解析:美国国防、银行和支付的加密算法

本文详细介绍了iOS中WebSocket框架SRWebSocket的实现原理,包括初始化、连接流程、数据读写和断包粘包处理。通过SRWebSocket的API调用和内部逻辑,展示了WebSocket如何进行全双工通信,以及SRWebSocket如何处理SSL认证和WebSocket握手协议。此外,文中还探讨了SRWebSocket的线程管理,特别是常驻线程在网络连接中的作用。
摘要由CSDN通过智能技术生成

WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——可以通俗的解释为服务器主动发送信息给客户端。

区别于MQTT、XMPP等聊天的应用层协议,它是一个传输通讯协议。它有着自己一套连接握手,以及数据传输的规范。

而本文要讲到的SRWebSocket就是iOS中使用websocket必用的一个框架,它是用Facebook提供的。

关于WebSocket起源与发展,是怎么由:轮询、长轮询、再到websocket的,可以看看冰霜这篇文章:

微信,QQ这类IM app怎么做——谈谈Websocket

大家可以关注小编的群:656315826 可以获取相关视频教程和源码哦

二. SRWebSocket的对外的业务流程

首先贴一段SRWebSocket的API调用代码:

要简单使用起来,总共就4行代码,并且实现你需要的代理即可,整个业务逻辑非常简洁。

但是就这么几个对外的方法,SRWebSocket.m里面用了2000行代码来进行封装,那么它到底做了什么?我们接着往下看:

三. SRWebSocket的初始化以及连接流程:

1首先我们初始化:

会初始化一些属性:

包括对schem进行断言,只支持ws/wss/http/https四种。

当前socket状态,是正在连接,还是已连接、断开等等。

初始化工作队列,以及流回调线程等等。

初始化读写缓冲区:_readBuffer、_outputBuffer。

2. 输入输出流的创建及绑定:

在这里,我们根据传进来的url,类似ws://localhost:80,进行输入输出流CFStream的创建及绑定。

[图片上传失败...(image-677c80-1534401345579)]

到这里,初始化工作就完成了,接着我们调用了open开始建立连接:

 

open方法定义了一个超时,如果超时了还在SR_CONNECTING,则报错,并且断开连接,清除一些已经初始化好的参数。

开始连接主要是给输入输出流绑定了一个runloop,说到这个runloop,不得不提一下SRWebSocket线程的问题:

一开始初始化我们提过SRWebSocket有一个工作队列:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值