无法在后台iOS中保持Websocket存活

时间:2013-06-02 13:39:58

标签: objective-c sockets websocket objective-c-blocks voip

我正在创建一个VOIP应用程序,并使用SocketRocket库来管理我的Websockets并从中提取数据。但我的主要问题是当我点击(IOS)主页按钮时,我的websocket在一分钟后断开连接。我已经阅读了Apple的文档,用于从下面的链接开发VOIP应用程序

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

我也在用于VOIP和音频的plist中设置UIBackgroundModes,但是当我恢复我的应用程序时,我的websocket状态已关闭,尽管我没有发布websocket对象。

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

现在重新建立与Websocket的连接,所以我需要再次调用websocket open并在之前发布之后创建另一个Websocket对象实例。

关闭websocket后,我的服务器SIP注册也会断开连接,我需要重新连接到我的SIP。

如何防止我的websocket接近?如何使setKeepAliveTimeout:handler:对解决我的问题很有帮助。

用于建立Websocket的库用法如下

https://github.com/square/SocketRocket

1 个答案:

答案 0 :(得分:3)

尝试在SRWebSocket _initializeStreams

中添加以下两行
// Setup connections to be VOIP connections
CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
CFWriteStreamSetProperty(writeStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);