美文网首页
WebSocket -- SocketRocket使用

WebSocket -- SocketRocket使用

作者: 大叔程序猿 | 来源:发表于2018-05-18 17:27 被阅读0次

    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使用

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