package main import ( "encoding/json" "fmt" "github.com/gorilla/websocket" "github.com/sirupsen/logrus" "time" ) func main() { wsURL := "ws://10.0.0.3:12090/bus/v1/homePage" d := websocket.Dialer{} conn, _, err := d.Dial(wsURL, nil) if err != nil { panic(err.Error()) } go clientReadMessage(conn) writeToken(conn) go clientWriteMessage(conn) select {} } func writeToken(conn *websocket.Conn) { token := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVVUlEIjoiYWM3NzgyMDMtNTg3ZC00ZjBjLWEzZDktYzgwNDA1NTBjNDllIiwiVXNlcklEIjoyLCJVc2VybmFtZSI6Inl1bmxvbmciLCJOaWNrTmFtZSI6IuadjuS6kem-mSIsIlJvbGVJRHMiOlszXSwiRGVwdElEIjoxLCJSb2xlTmFtZXMiOm51bGwsImlzcyI6IkpXVCIsImV4cCI6MTY3MzQxNjA1MSwibmJmIjoxNjczMzI5NjUxfQ.QxEgaPcTBmP8JTn0d7CVRs0aXl1C3M3Dynh4KFqMWh8" homeMsg := HomeMsg{ MsgType: 11, Data: token, } homeBytes, err := json.Marshal(homeMsg) if err != nil { fmt.Println("marshal err") return } err = conn.WriteMessage(websocket.TextMessage, homeBytes) if err != nil { fmt.Printf("Write Message error:%s\n", err) return } fmt.Println("Write Message success") } func clientReadMessage(conn *websocket.Conn) { for { msgType, msg, err := conn.ReadMessage() if err != nil { if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) { logrus.Warnf("readMessage err:%s", err) } else { logrus.Info("readMessage conn closed") } break } logrus.WithFields(logrus.Fields{"msgType": msgType, "data": string(msg), "err": err}).Info("read success") } } type HomeMsg struct { DeptID int `json:"deptId"` MsgType uint8 `json:"msgType"` Data string `json:"data"` } func clientWriteMessage(conn *websocket.Conn) { ticker := time.NewTicker(5 * time.Second) for { select { case <-ticker.C: homeMsg := HomeMsg{ MsgType: 1, Data: "", } homeBytes, err := json.Marshal(homeMsg) if err != nil { fmt.Println("marshal err") return } err = conn.WriteMessage(websocket.TextMessage, homeBytes) if err != nil { fmt.Printf("Write Message error:%s\n", err) return } fmt.Println("Write Message success") } } }