【问题标题】:Unable to keep Websocket alive in background iOS无法在后台 iOS 中保持 Websocket 存活
【发布时间】:2013-05-28 19:26:52
【问题描述】:

我正在创建一个 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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-08-19
      • 2011-05-26
      • 2021-09-22
      • 2013-10-02
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      相关资源
      最近更新 更多