使用WebSocket进行长连接通信

主要使用的是CocoaAsyncSocket

集成就不说了,打开workspace

1.在build phases中加入编译源

2.引入头文件

#import<GCDAsyncSocket.h>

@property(nonatomic,retain)GCDAsyncSocket *socket;//定义一个Socket对象

3.遵守协议<GCDAsyncSocketDelegate>

4.初始化

self.socket =[[GCDAsyncSocketalloc]initWithDelegate:selfdelegateQueue:dispatch_get_global_queue(0,0)];

5.连接服务器

[self.socket connectToHost:host onPort:port error:&error]//返回值是BOOL类型的

6.发送数据

[self.socketwrite Data:msg DatawithTimeout:30 tag:123];//msg为Data类型

7.各协议使用

//成功链接到服务器后会回调的方法

- (void)socket:(GCDAsyncSocket*)sock didConnectToHost:(NSString*)host port:(uint16_t)port{

  //NSLog("Connect  to the server successfully!");

//Or do something

}

//接收数据完成后会回调的方法

- (void)socket:(GCDAsyncSocket*)sock didReadData:(NSData*)data withTag:(long)tag;

//接收过程中会回调的方法  主要用于查看接收进度

- (void)socket:(GCDAsyncSocket*)sock didReadPartialDataOfLength:(NSUInteger)partialLength tag:(long)tag;

//发送数据完成后会回调的方法

- (void)socket:(GCDAsyncSocket*)sock didWriteDataWithTag:(long)tag;

//发送过程中会回调的方法  主要用于查看发送进度

//当某一读/写(下一个方法)任务达到超时时间,但还没有完成时,用于给当前任务增加超时时间的方法(如果不实现该方法,任务会正常超时结束)

- (NSTimeInterval)socket:(GCDAsyncSocket*)sock shouldTimeoutReadWithTag:(long)tag elapsed:(NSTimeInterval)elapsed bytesDone:(NSUInteger)length;

- (NSTimeInterval)socket:(GCDAsyncSocket*)sock shouldTimeoutWriteWithTag:(long)tag elapsed:(NSTimeInterval)elapsed bytesDone:(NSUInteger)length;


先写到这吧,以后慢慢加

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iPhone的标准推荐是CFNetwork 库编程,其封装好的开源库是 cocoa AsyncSocket库,用它...
    Ethan_Struggle阅读 2,288评论 2 12
  • 转载:http://www.cocoachina.com/ios/20170615/19529.html 参考:h...
    F麦子阅读 4,047评论 3 2
  • iPhone的标准推荐是CFNetwork 库编程,其封装好的开源库是 cocoa AsyncSocket库,用它...
    夜殇丶夜逝阅读 4,073评论 1 23
  • 以流的方式处理IM通讯问题好处是无需多次建立连接,另外消息的网络开销少,而xmpp会有很多冗余的信息; 使用开源项...
    sea777777阅读 2,376评论 0 8
  • 男人与女人 王汉文 男人与女人 是上帝做的一对艺术品 就像是镙杆与镙帽 天生一对,缺一不可 越拧越紧,完美结合 男...
    王汉文阅读 541评论 6 4