webRTC appRTC, соединение автоматически прерывается между вызовами через интервал около 2 минут (демонстрация ISBX)
Я использую библиотеку git от ISBX и встроенную функцию видеовызова в моем приложении swift. Все работает нормально. Это просто главный блокировщик, примерно через 2 минуты соединение автоматически завершается со следующей ошибкой: -
WebSocket закрыт с кодом: 1001 причина: обнаружен конец потока wasClean: 0
Подробная ошибка
2016-07-18 12:44:20.687 testOttaApp-QA[527:74428] WebSocket закрыт с кодом: 1001 причина: обнаружен конец потока wasClean: 0
2016-07-18 12: 44: 20.687 testOttaApp-QA [527: 74428] C-> RS: BYE
2016-07-18 12: 44: 20.687 testOttaApp-QA [527: 74428] url = https://apprtc.appspot.com/leave/ootaTest82/54508636
2016-07-18 07: 14: 21.503 testOttaApp-QA [527: 16e893000] ИНФОРМАЦИОННАЯ ММИНТЕГРАЦИЯ CMediaPlatformWrapper.cpp: 937
CMediaPlatformWrapper:: DevicePropertyChanged вызывается
2016-07-18 07:14:21.504 testOttaApp-QA[527:16e893000] ИНФОРМАЦИЯ О МИНТЕГРАЦИИ CMediaPlatformWrapper.cpp:969 CMediaCallWrapper::fireMediaPlatformEvent() вызывается с типом 4 Отключено!
2016-07-18 07: 14: 21.514 testOttaApp-QA [527: 1a05f7000] INFO APPLICATION CUcmpConversationsManager.cpp: 2348 CUcmpConversationsManager:: onEvent (). EventType: 4
2016-07-18 12: 44: 22.989 testOttaApp-QA [527: 74428] Незарегистрированный на комнатном сервере.
1 ответ
Наконец один из моих разработчиков решил эту проблему.
В классе ARDWebSocketChannel.m он постоянно выполняет проверку связи с сервером, чтобы избежать разрыва соединения.
#pragma mark - SRWebSocketDelegate
- (void)webSocketDidOpen:(SRWebSocket *)webSocket {
NSLog(@"WebSocket connection opened.");
self.state = kARDWebSocketChannelStateOpen;
if (_roomId.length && _clientId.length) {
[self registerWithCollider];
// 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
{
if(_socket != nil)
{
[_socket sendPing:nil];
}
}