main.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/gorilla/websocket"
  6. "github.com/sirupsen/logrus"
  7. "time"
  8. )
  9. func main() {
  10. wsURL := "ws://10.0.0.3:12090/bus/v1/homePage"
  11. d := websocket.Dialer{}
  12. conn, _, err := d.Dial(wsURL, nil)
  13. if err != nil {
  14. panic(err.Error())
  15. }
  16. go clientReadMessage(conn)
  17. writeToken(conn)
  18. go clientWriteMessage(conn)
  19. select {}
  20. }
  21. func writeToken(conn *websocket.Conn) {
  22. token := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVVUlEIjoiYWM3NzgyMDMtNTg3ZC00ZjBjLWEzZDktYzgwNDA1NTBjNDllIiwiVXNlcklEIjoyLCJVc2VybmFtZSI6Inl1bmxvbmciLCJOaWNrTmFtZSI6IuadjuS6kem-mSIsIlJvbGVJRHMiOlszXSwiRGVwdElEIjoxLCJSb2xlTmFtZXMiOm51bGwsImlzcyI6IkpXVCIsImV4cCI6MTY3MzQxNjA1MSwibmJmIjoxNjczMzI5NjUxfQ.QxEgaPcTBmP8JTn0d7CVRs0aXl1C3M3Dynh4KFqMWh8"
  23. homeMsg := HomeMsg{
  24. MsgType: 11,
  25. Data: token,
  26. }
  27. homeBytes, err := json.Marshal(homeMsg)
  28. if err != nil {
  29. fmt.Println("marshal err")
  30. return
  31. }
  32. err = conn.WriteMessage(websocket.TextMessage, homeBytes)
  33. if err != nil {
  34. fmt.Printf("Write Message error:%s\n", err)
  35. return
  36. }
  37. fmt.Println("Write Message success")
  38. }
  39. func clientReadMessage(conn *websocket.Conn) {
  40. for {
  41. msgType, msg, err := conn.ReadMessage()
  42. if err != nil {
  43. if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) {
  44. logrus.Warnf("readMessage err:%s", err)
  45. } else {
  46. logrus.Info("readMessage conn closed")
  47. }
  48. break
  49. }
  50. logrus.WithFields(logrus.Fields{"msgType": msgType, "data": string(msg), "err": err}).Info("read success")
  51. }
  52. }
  53. type HomeMsg struct {
  54. DeptID int `json:"deptId"`
  55. MsgType uint8 `json:"msgType"`
  56. Data string `json:"data"`
  57. }
  58. func clientWriteMessage(conn *websocket.Conn) {
  59. ticker := time.NewTicker(5 * time.Second)
  60. for {
  61. select {
  62. case <-ticker.C:
  63. homeMsg := HomeMsg{
  64. MsgType: 1,
  65. Data: "",
  66. }
  67. homeBytes, err := json.Marshal(homeMsg)
  68. if err != nil {
  69. fmt.Println("marshal err")
  70. return
  71. }
  72. err = conn.WriteMessage(websocket.TextMessage, homeBytes)
  73. if err != nil {
  74. fmt.Printf("Write Message error:%s\n", err)
  75. return
  76. }
  77. fmt.Println("Write Message success")
  78. }
  79. }
  80. }