我正在使用SRWebSocket在iOS中打开websocket连接。但是,如果我有时保持应用程序空闲,则连接自动关闭。之后,当我尝试发送任何数据时,websocket连接失败。
无论如何都要保持websocket连接活着,直到我手动断开连接?
答案 0 :(得分:3)
我们需要间歇性地ping服务器(在我的情况下,我每隔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的对象。
答案 1 :(得分:2)
当应用程序处于空闲状态或应用程序进入后台时,Web Socket会断开连接。您可以尝试使用此:
[UIApplication sharedApplication] .idleTimerDisabled = YES
使用此功能,如果您的应用正在运行,则会禁用iPhone的闲置状态。