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 для бездействия, если ваше приложение работает.