美文网首页收藏ios
socketRocket 封装工具

socketRocket 封装工具

作者: CDLOG | 来源:发表于2019-02-12 16:35 被阅读53次

    简介

    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链接

    相关文章

      网友评论

        本文标题:socketRocket 封装工具

        本文链接:https://www.haomeiwen.com/subject/wbskeqtx.html