package pkg import ( "encoding/json" "log" "net/url" "git.mmeiblog.cn/mei/nezha-recoder/configs" "github.com/gorilla/websocket" ) // Struct type Message struct { Now int64 `json:"now"` // timestamp Online int `json:"online"` // online number Servers []Servers `json:"servers"` } type Servers struct { Id int `json:"id"` Name string `json:"name"` Host Host `json:"host"` State State `json:"state"` } type Host struct { Disk_total int `json:"disk_total"` Mem_total int `json:"mem_total"` Arch string `json:"arch"` Platform string `json:"platform"` } type State struct { Cpu float64 `json:"cpu"` Disk_used int `json:"disk_used"` Load_5 float32 `json:"load_5"` Net_in_speed int `json:"net_in_speed"` Net_out_speed int `json:"net_out_speed"` Process_count int `json:"process_count"` } func GetData() (servers Message) { u := url.URL{Scheme: configs.SCHEME, Host: configs.NEZHA_HOST, Path: "/api/v1/ws/server"} conn, _, err := websocket.DefaultDialer.Dial(u.String(), nil) if err != nil { log.Fatal("dial error:", err) return } defer conn.Close() _, data, err := conn.ReadMessage() if err != nil { log.Fatal("read error:", err) return } var msg Message if err = json.Unmarshal(data, &msg); err != nil { log.Println("json parse error:", err) return } return msg }