ios

使用WebSocket进行长连接通信

2016-09-28  本文已影响962人  可惜_没如果丶

主要使用的是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;

先写到这吧,以后慢慢加

上一篇下一篇

猜你喜欢

热点阅读