You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
3.0 KiB
markdown

# Flash Send
跨平台局域网文件传输与聊天应用,基于 Tauri 2 + Vue 3 + Rust 构建。
## 功能特性
- 🔍 **局域网设备发现** - UDP 广播自动发现同一网络内的设备
- 💬 **实时聊天** - WebSocket 实现的低延迟文本消息
- 📁 **文件传输** - HTTPS 加密传输,支持大文件
- 🔒 **安全通信** - TLS 加密所有通信,自签名证书
- 💾 **历史记录** - SQLite 本地存储聊天和传输记录
- 🎨 **现代 UI** - 扁平化设计,参考微信/LocalSend 风格
## 技术栈
### 后端 (Rust)
- **Tauri 2** - 跨平台桌面应用框架
- **Tokio** - 异步运行时
- **Rustls** - TLS 加密
- **Axum** - HTTP 服务
- **tokio-tungstenite** - WebSocket
- **rusqlite** - SQLite 数据库
### 前端 (TypeScript)
- **Vue 3** - 响应式 UI 框架
- **Pinia** - 状态管理
- **Vue Router** - 路由管理
- **TailwindCSS** - 样式框架
- **Lucide Icons** - 图标库
## 项目结构
```
flash-send/
├── src/ # Vue 前端源码
│ ├── pages/ # 页面组件
│ ├── components/ # UI 组件
│ ├── stores/ # Pinia 状态管理
│ ├── api/ # Tauri API 封装
│ ├── hooks/ # Vue Hooks
│ ├── types/ # TypeScript 类型
│ └── router/ # 路由配置
├── src-tauri/ # Rust 后端源码
│ └── src/
│ ├── discovery/ # UDP 设备发现
│ ├── websocket/ # WebSocket 聊天
│ ├── http/ # HTTP 文件传输
│ ├── tls/ # TLS 加密
│ ├── database/ # SQLite 数据库
│ ├── models/ # 数据模型
│ ├── commands/ # Tauri 命令
│ └── utils/ # 工具函数
└── public/ # 静态资源
```
## 开发环境
### 前置要求
- Node.js 18+
- Rust 1.70+
- pnpm 或 npm
### 安装依赖
```bash
# 安装前端依赖
npm install
# Rust 依赖会在首次构建时自动安装
```
### 开发模式
```bash
npm run tauri dev
```
### 构建发布
```bash
npm run tauri build
```
## 通信协议
### UDP 设备发现 (端口 53317)
```json
{
"version": 1,
"device": {
"deviceId": "uuid",
"deviceName": "设备名",
"ip": "192.168.1.100",
"wsPort": 53318,
"httpPort": 53319,
"capabilities": ["text", "image", "file"]
},
"packetType": "announce|query|response|goodbye"
}
```
### WebSocket 消息 (端口 53318)
```json
{
"id": "uuid",
"type": "text|image|event|ack|ping|pong",
"content": "消息内容",
"from": "发送者设备ID",
"to": "接收者设备ID",
"timestamp": 1700000000,
"status": "pending|sent|delivered|read|failed"
}
```
### HTTP 文件传输 (端口 53319)
- `POST /upload` - 上传文件
- `GET /file/:id` - 下载文件
- `GET /file/:id/info` - 获取文件信息
- `GET /health` - 健康检查
## 许可证
MIT License