2

我正在使用 GCDWebservers 来启动 http 服务。我希望它仍然接受后台模式的连接。这是我的源代码:

func startServer (){
    do {
        webServer?.stop()
        webServer?.removeAllHandlers()
            
        try self.webServer?.start(options: [GCDWebServerOption_BonjourName: "", GCDWebServerOption_BonjourType: IMS_DOMAIN, GCDWebServerOption_Port : IMS_SERVICE_PORT, GCDWebServerOption_AutomaticallySuspendInBackground: false])

    } catch {
        print("Start server error: ", error.localizedDescription)
    }
        
        
    print("bonjour type", self.webServer?.bonjourType)
}

它适用于模拟器,但在真实设备上它不起作用。当 App 再次进入前台时,此消息打印输出:

dnssd_clientstub read_all(10) DEFUNCT

[错误] Bonjour 注册错误 -72000(域 10)

请帮我。

4

1 回答 1

2

当您的应用程序在后台时(最多前几分钟除外),您无法运行 Web 服务器。有关详细信息,请参阅 GCDWebServer 文件中的“iOS 应用程序的 GCDWebServer 和后台模式”部分README

通常,您必须在应用程序处于后台时停止任何网络服务器,并在应用程序回到前台时重新启动它们。

于 2016-10-29T15:28:50.203 回答