GCDAsyncSocketManager
GCDAsyncSocketManager copied to clipboard
关于断线重连的问题想请教一下
#pragma mark socket已经连接失败
- (void)socketDidDisconnect:(GCDAsyncSocket *)clientSocket withError:(NSError *)err{ NSLog(@"与服务器断开连接%@",err); self.connectStatus = -1; [self.beatTimer invalidate]; self.beatTimer = nil; [self socketDidDisconectBeginSendReconnect:@"ping"]; }
//断线重连
- (void)socketDidDisconectBeginSendReconnect:(NSString *)reconnectBody { NSLog(@"断线心跳"); self.reconnectTimer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(reconnection) userInfo:nil repeats:NO]; [[NSRunLoop mainRunLoop] addTimer:self.reconnectTimer forMode:NSRunLoopCommonModes]; } //断线重连定时器
- (void)reconnection{ NSError *error = nil; if (![self.clientSocket connectToHost:self.serveSocketHost onPort:self.serveSocketPort withTimeout:30 error:&error]) { //-1 未连接 ,然后判断未连接的时候就会自动连接 self.connectStatus = -1; [self connectSocketHost]; } }
我删除了断线的次数,请问这样子为什么我在主动断线后走不到- (void)reconnection 这个方法呀? 请问我这样子在断线后再去发起一次连接会造成递归吗?(因为我现在运行不到定时器所以不能确定啊。。)
//-1 未连接 ,然后判断未连接的时候就会自动连接 请问在reconnection内里self.connectStatus = -1; 就能够断线重连吗?
定时器写的没问题,socketDidDisconectBeginSendReconnect
这个方法执行进来了么?