mcpField
S
swift-networking

swift-networking

github.com/johnrogers开发233159 次安装40 周前更新
代码仓库

关于 swift-networking

面向 Swift 开发者的 Apple Network.framework 网络技能,涵盖 TCP、UDP 和 QUIC 连接设置、生命周期处理、迁移与故障排查。

主要功能

  1. 01选择 TCP、UDP 或 QUIC
  2. 02设置 NWConnection 并管理生命周期
  3. 03NetworkConnection async/await 指导
  4. 04发送和接收数据并处理错误
  5. 05网络切换与重试指导

适用场景

  1. 01构建自定义协议或 UDP 网络功能
  2. 02管理连接状态与故障
  3. 03从套接字或 URLSession 迁移
  4. 04排查超时与 TLS 故障

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/johnrogers/claude-swift-engineering --skill swift-networking

安装后在 Claude Code 中输入/swift-networking确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
connection-states.md
getting-started.md
ios26-networking.md
migration.md
troubleshooting.md

详细介绍

Swift Networking

Network.framework 是 Apple 的现代网络 API,用于 TCP/UDP 连接。它以智能连接建立、用户空间网络和无缝移动性处理取代 BSD 套接字。

参考资料加载指南

只要有一丝可能需要用到相关内容,就务必加载参考文件。 宁可多掌握上下文,也不要错过模式或犯错。

参考资料加载时机
入门指南设置用于 TCP/UDP 的 NWConnection、选择 API
连接状态处理 .waiting、.ready、.failed 状态转换
iOS 26+ 网络使用支持 async/await 的 NetworkConnection、TLV 分帧、Coder 协议
迁移指南从套接字、CFSocket、SCNetworkReachability、URLSession 迁移
故障排查调试超时、TLS 故障和连接问题

核心工作流

  1. 根据使用场景选择传输方式(TCP/UDP/QUIC)
  2. 创建 NWConnection(iOS 12+)或 NetworkConnection(iOS 26+)
  3. 设置连接生命周期的状态处理程序
  4. 在适当的队列上启动连接
  5. 正确处理错误,发送和接收数据
  6. 处理网络切换(WiFi 到蜂窝网络)

何时使用 Network.framework,而非 URLSession

  • URLSession:HTTP、HTTPS、WebSocket、简单的 TCP/TLS 流
  • Network.framework:UDP、自定义协议、底层控制、点对点、游戏

常见错误

  1. 忽略状态处理程序 — 创建 NWConnection 却不设置状态变更处理程序,就无法得知连接何时就绪或失败。务必先实现状态处理程序。

  2. 阻塞主线程 — 切勿在主队列上调用 receive()。所有网络操作都应使用后台 DispatchQueue 或 Task。

  3. 选择了错误的队列 — 使用错误的队列(例如用 UI 队列处理网络任务,或用串行队列进行并发读取)会导致死锁或无声失败。务必明确选择队列。

  4. 未处理网络切换 — WiFi/蜂窝网络切换或网络丢失不一定会被自动检测到。实现可用性检查和状态监控,确保应用健壮可靠。

  5. 错误恢复不当 — 网络错误需要带退避机制的重试逻辑。遇到瞬时错误(超时、临时断连)就立即失败,会导致糟糕的用户体验。

评论

支持 Markdown