📐 系统架构
Droplink 采用简洁的消息推送架构,实现手机分享、电脑打开的核心功能。
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Android │────────▶│ Gotify │────────▶│ Chrome │
│ 手机端 │ (推送) │ Server │ (接收) │ 扩展 │
└─────────┘ └─────────┘ └─────────┘
│ │ │
│ 分享链接 │ 存储消息 │ 打开链接
│ POST 消息 │ WebSocket 推送 │ 新标签页
│ │ │
✅ 200 OK │ 实时推送 │ ✅ 链接已打开
(分享完成) │ │ (任务完成)🎯 核心设计理念
1. 极简流程
用户只需两步
📱 手机分享链接
↓
推送到 Gotify
↓
✅ 收到 200 OK,分享完成
↓
💻 电脑浏览器自动打开好处:
- ✅ 用户体验极佳,2 秒完成
- ✅ 无需复制粘贴
- ✅ 无需手动操作
2. 实时推送
手机端推送消息
↓
Gotify 存储并推送
↓
Chrome 扩展实时接收
↓
自动打开新标签页3. 安全可靠
- 邮箱验证码登录
- HTTPS 加密传输
- 支持私有化部署
🔄 完整工作流程
场景:用户分享链接到电脑
1️⃣ 用户操作(Android App)
├─ 看到感兴趣的链接
├─ 点击"分享"
├─ 选择 Droplink
└─ 点击"发送"
2️⃣ 前端推送(Android App)
├─ 构造消息(包含链接)
├─ POST 到 Gotify
└─ ✅ 收到 200 OK,显示"已推送"
3️⃣ 消息推送(Gotify)
├─ 存储消息
├─ 通过 WebSocket 推送
└─ Chrome 扩展实时接收
4️⃣ 打开链接(Chrome 扩展)
├─ 解析消息内容
├─ 提取链接
├─ 创建新标签页
└─ ✅ 链接已打开🏗️ 技术栈
前端层
Android 应用
- 语言:Kotlin
- UI 框架:Jetpack Compose
- 架构:MVVM + Clean Architecture
- 网络:OkHttp + Retrofit
Chrome 扩展
- 框架:Plasmo
- 语言:TypeScript
- UI 库:React
- 状态管理:Zustand
iOS 应用(计划中)
消息服务层
Gotify Server
- 开源的自托管消息推送服务器
- 支持 REST API 发送消息
- 支持 WebSocket 实时推送
- 支持消息持久化存储
认证服务层
Droplink Auth Server
- 运行时:Bun
- 框架:Elysia
- 数据库:SQLite
- 职责:
- 邮箱验证码登录
- 自动创建 Gotify 用户
- 管理 Token
🔒 安全设计
1. 邮箱验证码登录
流程:
用户输入邮箱
↓
认证服务发送验证码
↓
用户输入验证码
↓
认证服务验证通过
↓
自动创建 Gotify 用户
↓
返回 Gotify Token
↓
客户端保存 Token,开始使用2. Token 管理
公共服务模式:
- 使用 Droplink Auth 服务
- 邮箱验证码登录
- 自动管理 Token
3. 数据加密
- 所有通信使用 HTTPS
- Token 存储在客户端本地加密存储
📊 架构优势
✅ 用户体验
- 手机分享即完成,2 秒搞定
- 电脑自动打开,无需手动操作
- 实时推送,毫秒级响应
✅ 可靠性
- Gotify 消息持久化,不会丢消息
- WebSocket 实时推送,延迟极低
- 支持离线消息,上线后自动接收
✅ 灵活性
- 开源透明,可自行修改
- 跨平台支持(Android、Chrome)
✅ 可扩展性
- 基于标准的消息协议
- 易于添加新平台支持