6

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

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

我还在 plist 中为 VOIP 和音频设置 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

4

1 回答 1

3

尝试在 SRWebSocket _initializeStreams 中添加以下两行

// Setup connections to be VOIP connections
CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
CFWriteStreamSetProperty(writeStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
于 2013-06-12T07:50:31.107 回答