SRWebsocket соединение закрывается автоматически после простоя приложения некоторое время в iOS

Я использую SRWebSocket, чтобы открыть соединение с websocket в iOS. Но если я иногда оставляю приложение бездействующим, соединение закрывается автоматически. После этого, когда я пытаюсь отправить какие-либо данные, происходит сбой подключения к веб-сокету.

Есть ли способ сохранить соединение с веб-сокетом, пока я не отключу вручную?

2 ответа

Решение

Мы должны периодически проверять связь с сервером (в моем случае я делаю это каждые 30 секунд), чтобы избежать закрытия соединения со стороны сервера.

- (void)webSocketDidOpen:(SRWebSocket *)webSocket;
{
    NSLog(@"Websocket Connected");

    // Sending autoping to server
    [self startConnectionCheckTimer];
}

// Checking for WSconnection by Sending Scheduled Ping
- (void)startConnectionCheckTimer {
    if (!_timer) {
        _timer = [NSTimer scheduledTimerWithTimeInterval:30.0f
                                                  target:self
                                                selector:@selector(sendPing:)
                                                userInfo:nil
                                                 repeats:YES];
    }
}

- (void)stopConnectionCheckTimer {
    if ([_timer isValid]) {
        [_timer invalidate];
    }
    _timer = nil;
}

- (void)sendPing:(id)sender
{
    [_webSocket sendPing:nil];
}

Где _webSocket - это мой объект SRWebSocket, _timer - это объект NSTimer.

Web Socket отключается, когда приложение не используется или приложение работает в фоновом режиме. Вы можете попробовать использовать это:
[UIApplication sharedApplication].idleTimerDisabled = YES

Используя это, вы отключите предоставление iPhone для бездействия, если ваше приложение работает.

Другие вопросы по тегам