Wails 3 进阶实战:基于 Go 语言实现 frp 自动化管理客户端的代码深度解析

一、 项目设计核心思想 本项目的核心定位是内网穿透的一键化管理。参考 ngrok 的服务模式,通过自建 frp 服务器 提供稳定中转,将复杂的配置封装在 Wails 客户端中。 商业闭环:通过微信小程序激励视频获取连接权限(2小时有效期)。 用户体验:一键连接、自动分配二级域名、配置持久化。 二、 前端架构:原生 JS 的三维交互 为了保持轻量,前端放弃了重量级框架,采用原生 JS 与 Wails 运行时通信。 控制面板 (Dashboard):状态驱动 UI。涉及扫码弹窗逻辑、广告验证状态机。 配置页面 (Settings):表单处理。重点在于 Local Port 的保存与通过 Wails Bind 将数据下发给 Go 后端。 运行日志 (Logs):虚拟黑屏终端。难点在于实时流式展示后端 frpc 吐出的日志。 三、 后端核心技术要点 将按照应用生命周期逻辑,对以下模块进行深度归纳: a. 应用原生窗口定义 结构化管理:AppManager 模式 // AppManager 统一管理应用和窗口 type AppManager struct { App *application.App MainWindow application.Window } var manager = &AppManager{} 采用了 AppManager 结构体来统一持有 App 实例和 MainWindow 实例。 知识点:在 Wails 3 中,不再像 v2 那样通过上下文(ctx)传递,而是鼓励通过对象持有的方式管理窗口引用。这方便了后续在任何 Service 中通过 manager.MainWindow 直接操控窗口(如置顶、隐藏、发送事件)。 ...

2026-02-11 · 6 min · Eagle

网络协议新纪元:基于 Go 语言实现支持 Ed25519 加密的 QUIC 高性能通信实战

1. 为什么是 QUIC?从 TCP 的瓶颈说起 手机在 Wi-Fi 和 4G/5G 之间切换(即“切网”)导致 TCP 连接断开,是移动互联网开发中的经典痛点。 TCP 连接是基于源 IP、源端口、目的 IP、目的端口这“四元组”来标识的。当你从 Wi-Fi 切换到 5G 时,手机的 IP 地址发生了变化,旧的四元组立即失效,TCP 必须重新进行三次握手建立新连接,正在传输的数据(如视频缓冲、下载)就会中断。 QUIC 引入了 Connection ID 的概念。它不依赖于底层 IP 地址。只要 CID 不变,即便你的 IP 从 A 变成了 B,服务端依然能通过 CID 认出:“噢,你还是刚才那个客户端!”。这样对于业务层完全无感知,数据传输无缝继续。这就是所谓的 “连接迁移 (Connection Migration)”。 除了切网,QUIC 在弱网(丢包率高、延迟高)下更强的原因在于: 改进的拥塞控制: QUIC 在应用层实现,可以更激进地进行丢包恢复。 无队头阻塞: 在 TCP 中,丢一个包全家等死;在 QUIC 中,你刷朋友圈的图丢了一个包,不会影响你接收聊天消息的流。 2. go 库quic-go 简介 这是Go的库,在 Go 语言世界里,quic-go 是事实上的标准实现。它不仅完整实现了 IETF QUIC 协议,还提供了类标准库 net 的简洁接口。 Connection (连接): 代表两个端点之间的 UDP 隧道。 Stream (流): 连接内部的逻辑通道,双向且独立。 3. 证书准备:使用 OpenSSL 生成 Ed25519 证书 为了极致的性能与安全,弃用了传统的 RSA,选择 Ed25519 算法。它的签名速度更快,密钥更短。 ...

2026-02-10 · 2 min · Eagle

告别域名过期焦虑:基于 Go + Wails 3 开发“豆子域名管家”,实现批量监测与企微钉钉预警

域名过期导致业务中断、流量缺失、品牌受损的案例比比皆是。手动记录域名的到期时间?是否会忘记,漏看? 我以前曾介绍过,我在微信小程序实现了域名证书监控功能。但是担心隐私,功能限制。这次我带来了豆子域名管家,本地化运行。 经过数月的规划和开发测试,豆子域名管家终于可以使用了。这是一款完全本地运行、支持批量导入管理以及可以企微和钉钉通知的域名证书检测工具。旨在解决域名过期监控难题。 特性 传统方式 豆子域名管家 运行方式 依赖云端服务 纯本地运行,数据不出本地 批量处理 手动逐个查询 一键导入,批量删除 通知渠道 单一(邮件/短信) 钉钉+企微双通道,支持Markdown格式 自定义提醒 固定时间提醒 可配置通知时间,提前预警天数 系统集成 无 系统托盘常驻,后台静默运行 隐私安全 数据上传第三方 域名数据和配置数据存本地 技术架构亮点: 工具基于Wails3框架构建,采用Vue3+NaiveUI前端技术栈,确保界面简洁美观,交互流畅,支持暗黑/浅色两种主题。 本地证书检测引擎,直接调用系统网络库进行TLS检测,无需依赖外部API。 多线程并发处理,使用go的特性批量进行域名检测。 跨平台兼容:支持Windows、macOS、Linux系统。 配置持久化,所有配置本地存储,重启后自动恢复。 支持域名证书检测,域名到期时间检测。 软件运行界面预览: 控制面板 配置页面 基本操作指南: 1,导入域名我们需要把要监控的域名按行录入到txt文档中,可以在软件配置界面下载示例模板,当准备完成后,选择刚才的文件,然后验证。没有问题后,点击确认导入即可。 2,配置机器人目前工具支持钉钉机器人和企业微信机器人,支持Markdown格式消息,可以查点击推送预览效果按钮查看推送效果。当输入机器人配置后,可以验证测试,当收到消息后说明配置成功,点击保存即可。可以同时配置企微和钉钉。这样会同时推送两份通知。 3,配置推送通知策略目前工具扫描调度间隔固定24小时,可以配置通知时间,和告警天数间隔。在通知时间,系统会将当天扫描的结果报表推送到机器人。如果用户更新某些域名证书后,可以在监控面板进行手动刷新。想查看效果,可以把通知时间设置为当前时间加几分钟,当到达时间后,将推送报表。确认无误后,可以调整为真正的推送时间。 4,系统托盘运行当完成域名导入和机器人以及通知策略配置后,可以关闭窗口,工具将自动缩放到系统托盘。如果需要退出,需要右键系统托盘退出。注意,如果退出工具,将不能监控域名,因为这是一个本地工具。所以需要工具长期运行。 5,监控面板监控面板的仪表板显示你的域名配置项统计信息,表格显示监视的域名列表。域名可以搜索,刷新以及删除。域名按照过期、告警、正常顺序排序。请查看最前面域名并及时处理。 工具按照自己的真实需求开发,如果你需要尝试,可以通过下方下载链接。目前仅提供了Windows版本。 https://91demo.top/b011 如果您有任何问题和建议,欢迎反馈和交流。

2026-01-28 · 1 min · Eagle