Go边缘代理: 单文件可执行+嵌入式MediaMTX+监控+注册
- edge-agent/: Go项目, 支持Windows托盘/Linux无头两种模式 - 使用go:embed将MediaMTX二进制嵌入单一可执行文件 - 首次运行自动释放MediaMTX并生成边缘节点配置 - 自动注册到origin (POST /api/nodes/register) - 10秒心跳上报CPU/RAM/带宽/连接数 (gopsutil采集) - Windows: getlantern/systray托盘菜单(状态/CPU/MEM/带宽/退出) - Linux: headless模式,适合systemd守护 - build.sh/build.ps1: 交叉编译脚本(Linux/Windows) - 更新start.sh/品牌名StreamCore
This commit is contained in:
1 parent
980b91f41f
commit
409e5d314e
14 files changed
+800
-11
No files matched your search
@@ -0,0 +1,64 @@
|
||||
//go:build windows
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"streamcore-edge/agent"
|
||||
|
||||
"github.com/getlantern/systray"
|
||||
)
|
||||
|
||||
func runTray(ag *agent.Agent) {
|
||||
systray.Run(
|
||||
func() { onReady(ag) },
|
||||
func() { onExit(ag) },
|
||||
)
|
||||
}
|
||||
|
||||
func onReady(ag *agent.Agent) {
|
||||
systray.SetIcon(iconData)
|
||||
systray.SetTitle("StreamCore Edge")
|
||||
systray.SetTooltip("StreamCore Edge Node")
|
||||
|
||||
mStatus := systray.AddMenuItem("Node: "+ag.NodeID(), "Node")
|
||||
mStatus.Disable()
|
||||
|
||||
systray.AddSeparator()
|
||||
|
||||
mCPU := systray.AddMenuItem("CPU: --", "CPU")
|
||||
mCPU.Disable()
|
||||
mMem := systray.AddMenuItem("MEM: --", "Memory")
|
||||
mMem.Disable()
|
||||
mBW := systray.AddMenuItem("Bandwidth: --", "Bandwidth")
|
||||
mBW.Disable()
|
||||
|
||||
systray.AddSeparator()
|
||||
|
||||
mQuit := systray.AddMenuItem("Quit", "Shutdown")
|
||||
|
||||
go func() {
|
||||
ticker := time.NewTicker(3 * time.Second)
|
||||
defer ticker.Stop()
|
||||
for {
|
||||
select {
|
||||
case <-ticker.C:
|
||||
m := ag.Metrics()
|
||||
mCPU.SetTitle(fmt.Sprintf("CPU: %.1f%%", m.CPU))
|
||||
mMem.SetTitle(fmt.Sprintf("MEM: %.1f%%", m.Memory))
|
||||
mBW.SetTitle(fmt.Sprintf("Bandwidth: %.1f Mbps", m.Bandwidth))
|
||||
case <-mQuit.ClickedCh:
|
||||
systray.Quit()
|
||||
return
|
||||
}
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func onExit(ag *agent.Agent) {
|
||||
log.Println("Tray exit requested")
|
||||
ag.Stop()
|
||||
}
|
||||
Reference in new issue
Block a user