iOS WebSocket的具体使用

一、业务场景

需要实时的获取后台的数据,后端会根据用户本地推送一些相关内容;通过和后台的讨论确定使用websocket来解决问题;
通过比较决定使用SocketRocket,自己根据库封装了工具 WebSocketManager,具体的库代码可以到gitee下载;代码下载地址:https://gitee.com/xzqxzq/web-socket.git

效果图.jpg

二、具体使用
  • 2.1 在 appDelegate.m中,APP进入前台的时候建立连接,APP进入后台的时候关闭连接
// APP进入前台
- (void)applicationDidEnterBackground:(UIApplication *)application {
    [[WebSocketManager shared] closeWebServiceByUser];
}
// APP进入后台
- (void)applicationDidBecomeActive:(UIApplication *)application {
     if ([WebSocketManager shared].connectType == WebSocketDisconnect || [WebSocketManager shared].connectType == WebSocketDefault) {
        [[WebSocketManager shared] connectServer];
    }
}
  • 2.2 在收到socket消息后,根据消息内容进行页面展示UI即可;或者发出通知在指定页面进行处理相关逻辑;
- (void)getMessageForSocket:(NSNotification *)notification {
    NSDictionary *userData = notification.userInfo;
    NSLog(@"获取到的socket数据-%@",userData);
}
三、注意事项
  • 3.1在使用的时候,自己做了简单的封装,添加了无网检测,断线重连和心跳机制(如果需要的话,心跳包标识需要和后台进行确定)
  • 3.2 在使用的时候 需要替换WebSocketManager.m文件里面的服务器url为自己的服务器url
//初始化 WebSocket
- (void)initWebSocket{
    NSURL *zangUrl = [NSURL URLWithString:@"ws://139.198.36.10:574/ws/vox/v1/stream_asr"];
    NSURL *hanUrl =  [NSURL URLWithString:@"ws://139.198.36.10:574/ws/vox/v1/stream_asr"];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:isHan?hanUrl:zangUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:20];
    if (self.socket) {
        self.socket.delegate = nil;
        [self.socket close];
        _socket = nil;
    }
    _socket = [[SRWebSocket alloc] initWithURLRequest:request];
    _socket.delegate = self;
    [_socket open];
}
  • 3.3 详细内容请查看git代码,如有问题欢迎留言探讨👉👉👉
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容