shikong 1d8eb79ac0 重构: 使用 Wails v2 框架重构为桌面应用版本
- 使用 Wails v2 + React 重构为跨平台桌面应用
- 新增可视化配置界面和消息历史记录功能
- 使用 SQLite 本地存储消息
- 实现 Windows 桌面通知和系统托盘功能
- 优化代码结构和错误处理
- 更新项目文档和快速开始指南
2026-01-22 01:20:47 +08:00
2024-04-21 01:11:45 +08:00

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

配置方式

  1. 通过界面配置: 启动应用后,在"配置"标签页填写服务器信息
  2. 手动编辑文件: 直接编辑配置文件后重启应用

项目结构

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
No description provided
Readme 402 KiB
Languages
Go 40.1%
JavaScript 39.6%
CSS 15.1%
TypeScript 4.5%
HTML 0.7%