LinkNest:我想做一个更可靠的多端资源传输系统
我为什么想做 LinkNest 现在一个人手里往往不止一台设备:电脑、手机、平板、服务器,甚至还有临时使用的开发机。 真正麻烦的不是“能不能传一个文件”,而是这些设备经常处在不稳定的网络环境里: 家里、学校、实验室的网络来回切换 DHCP 让设备 IP 经常变化 两台设备不一定同时在线 大文件传到一半可能因为网络波动中断 云服务器上已经有资源,但缺少一个清晰的索引和拉取入口 所以我想做一个项目,暂时叫 LinkNest,中文名是 链巢。 它不是想重新做一个普通网盘,也不是简单复制一个局域网传输工具,而是想在“局域网直连”和“云端资源池”之间做一个更轻量、更适合个人和小团队自部署的传输系统。 LinkNest 想解决什么问题 LinkNest 的核心目标是:在动态网络环境里,让多台设备依然能通过稳定身份、在线状态和云端资源索引完成可靠传输。 我最想先解决的是这几件事: 设备身份不要绑定 IP 设备第一次启动时生成稳定的 Device ID,后续即使 IP 变了,服务端也知道它还是同一台设备。 服务端维护设备在线状态 客户端通过 WebSocket 发送心跳,服务端记录设备名、设备类型、当前局域网 IP、端口和最后在线时间。 云端保留资源索引 文件上传后,服务端记录文件元数据。另一台设备即使不和上传设备同时在线,也能从云端资源列表里拉取文件。 大文件支持断点续传 上传和下载按分片执行,中断后只补缺失分片,并通过 hash 校验完整性。 后续优先局域网直连 当两台设备在同一局域网内时,优先走直连;不可达时再用云端作为兜底。 第一阶段先做小闭环 这个项目不能一开始就把所有客户端、P2P、WebRTC、UI 和云存储都堆上去。 我现在更倾向于先做一个能跑通的最小闭环: Go 服务端基础框架 设备注册接口 Go CLI 客户端原型 Device ID 生成和持久化 WebSocket 心跳 云端设备列表 API IP 变化后设备身份不变、在线状态能更新 这个阶段完成后,项目至少能证明一个关键点: 设备身份和网络地址可以解耦,动态 IP 不应该让设备关系失效。 MVP 版本会包含什么 在第一阶段之后,MVP 会继续往“真正能传资源”的方向推进: 用户注册和登录 多设备绑定到同一账号 在线设备展示 文件上传到云服务器 云端资源列表 从云端下载文件 大文件分片上传 断点续传和 SHA-256 校验 基础 Web UI 或客户端界面 这个版本的定位很明确: 先让一台设备上传资源,另一台设备可以稳定地看到并拉取。等这个链路跑稳,再去做局域网发现、直连传输和更复杂的调度。 ...