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对象
网友评论