56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
//go:build !windows
|
|
// +build !windows
|
|
|
|
package tray
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// TrayManager 托盘管理器(非Windows平台实现)
|
|
type TrayManager struct {
|
|
logger *zap.Logger
|
|
webPort int
|
|
onExit func()
|
|
}
|
|
|
|
// NewTrayManager 创建托盘管理器
|
|
func NewTrayManager(logger *zap.Logger, webPort int, onExit func()) *TrayManager {
|
|
return &TrayManager{
|
|
logger: logger,
|
|
webPort: webPort,
|
|
onExit: onExit,
|
|
}
|
|
}
|
|
|
|
// Run 运行托盘(非Windows平台显示提示信息并阻塞)
|
|
func (t *TrayManager) Run() {
|
|
t.logger.Info("非Windows系统,跳过托盘初始化")
|
|
|
|
// 显示启动信息
|
|
fmt.Println("")
|
|
fmt.Println("========================================")
|
|
fmt.Println("🌐 MeshRay 服务已启动")
|
|
fmt.Println("========================================")
|
|
fmt.Printf("📍 Web 管理界面: http://localhost:%d\n", t.webPort)
|
|
fmt.Println("💡 提示: 使用 Ctrl+C 停止服务")
|
|
fmt.Println("========================================")
|
|
fmt.Println("")
|
|
|
|
// 等待退出信号
|
|
sigChan := make(chan os.Signal, 1)
|
|
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
|
|
|
|
<-sigChan
|
|
|
|
t.logger.Info("收到退出信号,正在关闭...")
|
|
if t.onExit != nil {
|
|
t.onExit()
|
|
}
|
|
}
|