You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI调用函数启动Swifter2本地HTTP服务器无法访问问题

解决方案

按以下步骤排查并解决问题:

1. 固定服务器实例生命周期

你大概率是把Swifter2服务器实例定义成了startServer函数的局部变量,函数执行完毕后实例就被自动回收,服务器直接停止。解决方法是把实例存为全局变量或视图属性:

// 作为全局变量或ContentView的属性
var server: HttpServer?

func startServer() {
    server = HttpServer()
    // 必须添加路由处理,否则访问任何路径都会返回404
    server["/"] = { _ in
        return .ok(.html("<p>Server is running</p>"))
    }
    do {
        try server?.start(9081)
        print("Server started on port 9081")
    } catch {
        print("Start server failed: \(error)")
    }
}

2. 纠正设备访问地址

在iPhone设备上,电脑浏览器访问localhost:9081无效——localhost指向的是你的电脑,而非iPhone。你需要用iPhone的实际IP地址:

  • 打开iPhone「设置」→「Wi-Fi」→ 点击当前连接的Wi-Fi,查看IP(比如192.168.3.105)
  • 在电脑浏览器中访问http://[iPhoneIP]:9081

3. 配置后台运行权限(按需)

如果需要App退到后台后服务器继续运行,需开启后台模式:

  • 打开Xcode项目「Signing & Capabilities」页面
  • 点击「+ Capability」,搜索添加「Background Modes」
  • 勾选「Voice over IP」(注意:苹果对后台权限审核严格,仅当App确实需要后台服务时使用,避免审核被拒)

4. 检查端口与路由

  • 尝试更换端口(比如8080),避免9081被其他应用占用
  • 确认已给服务器配置至少一条路由规则,无路由时所有请求都会返回404

内容的提问来源于stack exchange,提问作者MM1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 00:15:58