开发者社区> 问答> 正文

iOS使用AsycSocket第三方库与服务器连接,如何接收服务器的推送消息?

iOS开发使用AsycSocket第三方库,长链接,
那么为什么收不到服务器的推送消息?

展开
收起
爵霸 2016-03-09 16:01:11 2762 0
1 条回答
写回答
取消 提交回答
  • //设置读取超时 -1 表示不会使用超时
     #define READ_TIME_OUT -1
    
    #define MAX_BUFFER 1024
    
    //发送消息成功之后回调
    (void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag { //读取消息 [self.socket readDataWithTimeout:-1 buffer:nil bufferOffset:0 maxLength:MAX_BUFFER tag:0]; }
    
    //接受消息成功之后回调
    
    (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
     {
     //服务端返回消息数据量比较大时,可能分多次返回。所以在读取消息的时候,设置MAX_BUFFER表示每次最多读取多少,当data.length < MAX_BUFFER我们认为有可能是接受完一个完整的消息,然后才解析
     if( data.length < MAX_BUFFER )
     {
     //收到结果解析...
     NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
     NSLog(@"%@",dic);
     //解析出来的消息,可以通过通知、代理、block等传出去
    
    }
    
    [self.socket readDataWithTimeout:READ_TIME_OUT buffer:nil bufferOffset:0 maxLength:MAX_BUFFER tag:0];
    
    
    2019-07-17 18:56:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS计算与存储分离架构实践 立即下载