SocketRocket使用

您所在的位置:网站首页 shockrocket节点 SocketRocket使用

SocketRocket使用

2024-03-07 16:21| 来源: 网络整理| 查看: 265

SocketRocket是Facebook开源的一个用于 iOS, macOS and tvOS客户端的websocket框架。

facebook 1. 集成 使用cocoapods 只需要在podfile文件中加入pod 'SocketRocket',然后执行pod install就可以了 不使用cocoapods

添加文件 把下面的三个文件拖入项目中

Paste_Image.png 其中,SocketRocket.h文件是用来引入框架的所有类的文件,就像。目前,这个文件只引入了一个类,所以只有一行代码 ,这样的话,编译会报错,因为并没有一个SocketRocket的framework,需要把这一行代码改为 #import "SRWebSocket.h"。

添加依赖库 在Build Phases -> Link Binary With Libraries里加入如下frameworks:

libicucore.dylib CFNetwork.framework Security.framework Foundation.framework 2. 使用 初始化 初始化方法分为两类: 通过传入NSURLRequest的对象进行初始化 -(id)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray *)protocols allowsUntrustedSSLCertificates:(BOOL)allowsUntrustedSSLCertificates; -(id)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray *)protocols; -(id)initWithURLRequest:(NSURLRequest *)request; - 通过传入NSURL的对象进行初始化 -(id)initWithURL:(NSURL *)url protocols:(NSArray *)protocols allowsUntrustedSSLCertificates:(BOOL)allowsUntrustedSSLCertificates; -(id)initWithURL:(NSURL *)url protocols:(NSArray *)protocols; -(id)initWithURL:(NSURL *)url; 其中,使用NSURLRequest进行初始化可以自定义请求超时时间 [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:timeoutInterval] 打开连接 使用第一步创建出来的SRWebSocket对象(以下简称‘对象’)调用- (void)open来与服务器建立连接。这里需要注意// SRWebSockets are intended for one-time-use only. Open should be called once and only once.一个对象只能调用一次- (void)open调用过open后,对象的readyState就为SR_CONNECTING,如果再调用open,就会NSAssert(_readyState == SR_CONNECTING, @"Cannot call -(void)open on SRWebSocket more than once"); 发送数据 使用对象调用- (void)send:(id)data这个data可以是一个UTF8的字符串或者NSData对象 关闭连接 使用对象调用- (void)close来关闭一个连接。 回调 以delegate的方式进行回调,包括下面几个回调函数 @protocol SRWebSocketDelegate -(void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message; @optional -(void)webSocketDidOpen:(SRWebSocket *)webSocket; -(void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error; -(void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean; -(void)webSocket:(SRWebSocket *)webSocket didReceivePong:(NSData *)pongPayload; -(BOOL)webSocketShouldConvertTextFrameToString:(SRWebSocket *)webSocket; @end

其中, - webSocketDidOpen表示与服务器的连接建立成功,这时就可以与服务器进行交互了。 - didFailWithError表示连接出现错误,包括连接没有成功建立的错误、网络错误等。如果需要进行重连,应该在这里进行,可以采用Demo里面的方式进行重连:把以后的对象置空->重新初始化->调用open。应用切到后台2分钟以后才会出现连接错误的回调。

SocketRocket已经对消息的收发进行了处理。我们收到和发出的消息都是根据socket头进行分隔的,所以不会出现消息不完整或者多条消息同时收发的问题。

上面是在使用SocketRocket的过程中的总结,通过这些应该可以把这个框架使用起来,以后有时间会继续钻研这个框架的源码。SocketRocket还是挺好用的。

关于WebSocket协议的内容和对SocketRocket源码的分析都在我的博客



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3