- 使用 Wails v2 + React 重构为跨平台桌面应用 - 新增可视化配置界面和消息历史记录功能 - 使用 SQLite 本地存储消息 - 实现 Windows 桌面通知和系统托盘功能 - 优化代码结构和错误处理 - 更新项目文档和快速开始指南
Gotify Client (Wails 版)
基于 Wails v2 框架开发的 Gotify Windows 客户端,提供可视化配置界面、消息历史记录和桌面通知功能。
功能特性
- ✅ 可视化配置界面: 通过图形界面配置 Gotify 服务器地址和 Token
- ✅ 消息历史记录: 使用 SQLite 本地存储接收到的所有消息
- ✅ Windows 桌面通知: 接收消息时自动弹出 Windows 系统通知
- ✅ 实时连接状态: 显示与 Gotify 服务器的连接状态
- ✅ 断线自动重连: 连接断开后每 3 秒自动重连
- ✅ 消息优先级显示: 根据优先级显示不同颜色和音效的通知
- ✅ 消息管理: 支持查询和清空历史消息
技术栈
后端 (Go)
- Wails v2.8.0: 跨平台桌面应用框架
- Go 1.21: 主要编程语言
- SQLite: 本地数据存储 (github.com/mattn/go-sqlite3)
- WebSocket: 实时连接 Gotify 服务器 (github.com/gorilla/websocket)
- Windows Toast: 桌面通知 (gopkg.in/toast.v1)
- YAML: 配置文件格式 (gopkg.in/yaml.v3)
前端
- React: UI 框架
- Vite: 构建工具
- CSS3: 样式设计,深色主题
快速开始
前置要求
- Go 1.21+
- Node.js 16+
- Wails CLI v2.8.0+
- GCC 编译器 (Windows 下需安装 MinGW-w64 或 TDM-GCC)
开发模式运行
wails dev
构建生产版本
wails build
构建完成后,可执行文件位于 build/bin/ 目录。
配置说明
配置文件位于用户目录下: ~/.gotify-client/config.yaml
(Windows: C:\Users\用户名\.gotify-client\config.yaml)
配置内容:
server:
addr: "127.0.0.1:8080" # Gotify 服务器地址
userToken: "your-token-here" # 用户认证 Token
配置方式
- 通过界面配置: 启动应用后,在"配置"标签页填写服务器信息
- 手动编辑文件: 直接编辑配置文件后重启应用
项目结构
gotify-client/
├── main.go # 应用入口
├── app.go # 主应用逻辑和 API
├── wails.json # Wails 项目配置
├── internal/
│ ├── client/ # WebSocket 客户端
│ │ └── client.go
│ ├── config/ # 配置文件管理
│ │ └── config.go
│ ├── database/ # SQLite 数据库层
│ │ └── database.go
│ └── notify/ # Windows 桌面通知
│ └── notify.go
├── frontend/
│ ├── dist/ # 构建输出目录
│ ├── index.html # HTML 入口
│ ├── package.json # 前端依赖
│ ├── vite.config.js # Vite 配置
│ ├── src/
│ │ ├── App.jsx # 主界面组件
│ │ ├── App.css # 界面样式
│ │ └── main.jsx # React 渲染入口
│ └── wailsjs/ # Wails 自动生成的绑定代码
│ └── go/main/App.js
├── build/ # Wails 构建输出
└── .backup.old/ # 旧版本备份 (命令行版本)
API 接口
后端导出以下接口给前端调用:
| 方法 | 说明 |
|---|---|
GetConfig() |
获取当前配置 |
SaveConfig(config) |
保存配置 |
GetMessages(limit, offset) |
获取消息列表 |
GetMessageCount() |
获取消息总数 |
ClearMessages() |
清空所有消息 |
GetConnectionStatus() |
获取连接状态 |
Reconnect() |
重新连接服务器 |
Disconnect() |
断开连接 |
数据库设计
messages 表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | INTEGER | 主键,自增 |
| message_id | INTEGER | Gotify 消息 ID |
| app_id | INTEGER | 应用 ID |
| title | TEXT | 消息标题 |
| message | TEXT | 消息内容 |
| priority | INTEGER | 优先级 |
| date | TIMESTAMP | 消息时间 |
| created_at | TIMESTAMP | 创建时间 |
索引
idx_message_id: 消息 ID 索引idx_date: 日期降序索引
桌面通知
优先级与音效
| 优先级 | 音效 | 用途 |
|---|---|---|
| ≥ 8 | Notification.Default | 高优先级告警 |
| ≥ 5 | Notification.Reminder | 中等优先级提醒 |
| ≥ 2 | Notification.Mail | 普通消息 |
| < 2 | Notification.Mail | 低优先级消息 |
通知特性
- 中文 GBK 自动编码转换
- 点击通知可关闭
- 短时间自动消失
旧版本说明
.backup.old/ 目录包含原始的命令行版本,使用 TOML 配置文件和纯 WebSocket 客户端。
新版本使用 Wails 框架,提供图形界面和更多功能。
使用指南
详细使用指南请参考 GETTING_STARTED.md
许可证
MIT
相关链接
Description
Languages
Go
40.1%
JavaScript
39.6%
CSS
15.1%
TypeScript
4.5%
HTML
0.7%