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.
|
|
1 week ago | |
|---|---|---|
| document | 3 weeks ago | |
| public | 3 weeks ago | |
| scripts | 1 week ago | |
| src | 1 week ago | |
| src-tauri | 1 week ago | |
| .gitignore | 2 weeks ago | |
| README.md | 3 weeks ago | |
| index.html | 2 weeks ago | |
| package.json | 2 weeks ago | |
| pnpm-lock.yaml | 2 weeks ago | |
| postcss.config.js | 3 weeks ago | |
| tailwind.config.js | 1 week ago | |
| vite.config.js | 2 weeks ago | |
README.md
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
安装依赖
# 安装前端依赖
npm install
# Rust 依赖会在首次构建时自动安装
开发模式
npm run tauri dev
构建发布
npm run tauri build
通信协议
UDP 设备发现 (端口 53317)
{
"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)
{
"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