收藏ios

socketRocket 封装工具

2019-02-12  本文已影响53人  CDLOG

简介

socketRocket 是facebook基于WebSocket的封装的开源框架,在实际的的操作中需要自己加入其它的功能,比如重连机制,心跳机制,pingpong机制,数据帧解析。在这里写一个工具类来处理这几个功能。

参考文章

WebScoket建立即时通讯聊天室--SocketRocket的使用
socketRocket 封装,添加重连机制,block回调

导入库

pod 'SocketRocket'
pod 'MJExtension'

设计

1,因为只会有一个websocket连接,所以写成工具单例
2,使用block回调来处理SocketRocket本身的代理回调,简单方便
3,根据是用户主动取消连接还是系统取消来决定是否需要重连
4,使用计时器实现心跳机制,告诉服务器我还活着呢(在线)
5,实现pong代理方法,当服务器询问时(ping客户端)告诉服务器我还活着,不回答就是死了(离线)
6,数据帧解析,可以发送的数据包括字符串和NSData,一般使用将对象信息转换为字典,再转换为json字符串的形式发送给服务器,服务器返回json格式字符串,客户端自行解析为相应对象。

核心方法

/**
 单例
 @return 返回单例
 */
+(SocketRocketUtility *)instance;
/**
 打开连接
 
 @param urlStr 地址
 @param connect 连接成功回调
 @param receive 消息接收回调
 @param fail 连接失败回调
 */
-(void)openSocket:(NSString *)urlStr connect:(SocketDidConnectBlock)connect receive:(SocketDidReceiveBlock)receive fail:(SocketDidFailBlock)fail;
//关闭socket连接
-(void)closeSocket:(SocketDidCloseBlock)close;

/**
 发送消息,可以为NSString,或者NAData

 @param data 消息
 */
- (void)messageSend:(id)data;
//心跳机制
- (void)initHeartBeat;
//取消心跳
- (void)destoryHeartBeat;

具体的方法实现,写在了demo里了,可自行下载,每个方法属性都有注释,一定可以看懂的。

github链接

上一篇下一篇

猜你喜欢

热点阅读