GCDAsyncSocketManager icon indicating copy to clipboard operation
GCDAsyncSocketManager copied to clipboard

关于断线重连的问题想请教一下

Open VVennn opened this issue 6 years ago • 2 comments

#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 这个方法呀? 请问我这样子在断线后再去发起一次连接会造成递归吗?(因为我现在运行不到定时器所以不能确定啊。。)

VVennn avatar Mar 07 '18 13:03 VVennn

//-1 未连接 ,然后判断未连接的时候就会自动连接 请问在reconnection内里self.connectStatus = -1; 就能够断线重连吗?

VVennn avatar Mar 07 '18 13:03 VVennn

定时器写的没问题,socketDidDisconectBeginSendReconnect 这个方法执行进来了么?

Yuzeyang avatar Mar 16 '18 09:03 Yuzeyang