mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2025-12-22 22:32:41 +00:00
52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package job
|
|
|
|
import (
|
|
"github.com/mhsanaei/3x-ui/v2/web/service"
|
|
"github.com/shirou/gopsutil/v4/cpu"
|
|
"github.com/shirou/gopsutil/v4/mem"
|
|
)
|
|
|
|
// WebSocketUpdateJob sends periodic updates via WebSocket
|
|
type WebSocketUpdateJob struct {
|
|
wsService *service.WebSocketService
|
|
xrayService service.XrayService
|
|
}
|
|
|
|
// NewWebSocketUpdateJob creates a new WebSocket update job
|
|
func NewWebSocketUpdateJob(wsService *service.WebSocketService, xrayService service.XrayService) *WebSocketUpdateJob {
|
|
return &WebSocketUpdateJob{
|
|
wsService: wsService,
|
|
xrayService: xrayService,
|
|
}
|
|
}
|
|
|
|
// Run sends system metrics update
|
|
func (j *WebSocketUpdateJob) Run() {
|
|
if j.wsService == nil {
|
|
return
|
|
}
|
|
|
|
// Get system metrics
|
|
cpuPercents, _ := cpu.Percent(0, false)
|
|
var cpuPercent float64
|
|
if len(cpuPercents) > 0 {
|
|
cpuPercent = cpuPercents[0]
|
|
}
|
|
|
|
memInfo, err := mem.VirtualMemory()
|
|
var memoryPercent float64
|
|
if err == nil && memInfo != nil && memInfo.Total > 0 {
|
|
memoryPercent = memInfo.UsedPercent
|
|
}
|
|
|
|
// Send system update
|
|
j.wsService.SendSystemUpdate(cpuPercent, memoryPercent)
|
|
|
|
// Send traffic update if Xray is running
|
|
if j.xrayService.IsXrayRunning() {
|
|
traffics, clientTraffics, err := j.xrayService.GetXrayTraffic()
|
|
if err == nil {
|
|
j.wsService.SendTrafficUpdate(traffics, clientTraffics)
|
|
}
|
|
}
|
|
}
|