WebSocket -- SocketRocket使用

WebSocket与普通网络请求的区别

WebSocket是建立的长链接,既建立连接后持续受到数据,普通的网络请求建立一次连接后只能请求一次数据,想要再次请求数据必须再次建立网络连接,用WebSocket可以保持和服务长链接。

SocketRocket是Facebook开源的一个用于 iOS, macOS and tvOS客户端的websocket框架

1.pod 导入

如图

1.创建websocket链接            

self.socket = [[SRWebSocket alloc] initWithURLRequest: 

[NSURLRequestrequestWithURL:[NSURLURLWithString:urlString]]];  //ws://xxx.xx.xx.xxx:8088

 NSLog(@"请求的websocket地址:%@",self.socket.url.absoluteString);

self.socket.delegate=self;

其中,使用NSURLRequest进行初始化可以自定义请求超时时间

2.SRWebSocketDelegate 代理方法实现

@protocolSRWebSocketDelegate

-(void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message;//收到消息

@optional

-(void)webSocketDidOpen:(SRWebSocket *)webSocket;//连接成功

-(void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError*)error;//连接错误可以设置重连

-(void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString*)reason wasClean:(BOOL)wasClean;//socket连接断开

-(void)webSocket:(SRWebSocket *)webSocket didReceivePong:(NSData*)pongPayload;//*该函数是接收服务器发送的pong消息,

-(BOOL)webSocketShouldConvertTextFrameToString:(SRWebSocket *)webSocket;//返回YES以将作为文本发送的消息转换为NSString。返回NO,以跳过NSData ->对文本消息的NSString转换。默认值为YES。

@end

3.关闭链接

    使用对象调用- (void)close来关闭一个连接。

4.发送数据

    使用对象调用- (void)send:(id)data这个data可以是一个UTF8的字符串或者NSData对象

你可能感兴趣的:(WebSocket -- SocketRocket使用)