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;