2013-06-02 16 views
6

Tworzę aplikację VOIP, a także korzystam z biblioteki SocketRocket do zarządzania moimi Websockets i pobierania z niej danych. Ale moim głównym problemem jest kliknięcie przycisku Home (IOS), więc mój websocket rozłącza się po minucie. Czytałem dokumentację Apple do tworzenia aplikacji VOIP z linku poniżejNie można utrzymać Websocket przy życiu w tle iOS

https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html

Jestem również ustawienie UIBackgroundModes w plist dla VOIP i audio, ale kiedy wznowić mój wniosek, więc mój stan websocket jest zamknięta, choć nie jestem zwalnianie websocket Object.

_webSocket.readyState = 3 // It identifies that my websocket is close. 

Teraz restablishing połączenie z websocket więc muszę zadzwonić ponownie websocket otwarty i utworzyć inną instancję obiektu websocket po zwolnieniu uprzednio.

Po zamknięciu websocket moja rejestracja SIP z mojego serwera również się rozłączy i muszę ponownie połączyć się z moim SIP.

Jak mogę zapobiec zbliżeniu się mojego websocket i jak mogę zrobić setKeepAliveTimeout: handler: użyteczne, aby naprawić mój problem.

Biblioteka zastosowanie do ustalenia websocket jest poniżej

https://github.com/square/SocketRocket

Odpowiedz

3

spróbuj dodać następujące dwie linie w SRWebSocket _initializeStreams

// Setup connections to be VOIP connections 
CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP); 
CFWriteStreamSetProperty(writeStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);