Guest User

Untitled

a guest
Aug 10th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "encoding/json"
  5. "fmt"
  6. "log"
  7. "os"
  8. "os/signal"
  9.  
  10. "github.com/sacOO7/gowebsocket"
  11. )
  12.  
  13. type wsControl struct {
  14. // users can authenticate either by JWT tokens or username/password
  15. JWTToken string `json:"jwt_token"`
  16. Username string `json:"username"`
  17. Password string `json:"password"`
  18.  
  19. ActionType string `json:"action_type"` // subscribe, unsubscribe
  20. TaskID string `json:"task_id"`
  21. }
  22.  
  23. func main() {
  24. interrupt := make(chan os.Signal, 1)
  25. signal.Notify(interrupt, os.Interrupt)
  26.  
  27. socket := gowebsocket.New("ws://localhost:8700/v2/ws/logs")
  28.  
  29. log.Println("connecting...")
  30.  
  31. socket.OnConnectError = func(err error, socket gowebsocket.Socket) {
  32. log.Fatal("Received connect error - ", err)
  33. }
  34.  
  35. socket.OnConnected = func(socket gowebsocket.Socket) {
  36. log.Println("Connected to server")
  37. }
  38.  
  39. socket.OnTextMessage = func(message string, socket gowebsocket.Socket) {
  40. log.Printf("Received message: '%s', length: %d \n", message, len(message))
  41. }
  42.  
  43. socket.OnPingReceived = func(data string, socket gowebsocket.Socket) {
  44. log.Println("Received ping - " + data)
  45. }
  46.  
  47. socket.OnPongReceived = func(data string, socket gowebsocket.Socket) {
  48. log.Println("Received pong - " + data)
  49. }
  50.  
  51. socket.OnDisconnected = func(err error, socket gowebsocket.Socket) {
  52. log.Println("Disconnected from server ")
  53. return
  54. }
  55.  
  56. socket.Connect()
  57.  
  58. log.Println("sending control message")
  59.  
  60. if len(os.Args) != 2 {
  61. log.Println("missing task ID argument")
  62. os.Exit(1)
  63. }
  64.  
  65. ctrl := wsControl{
  66. Username: "admin",
  67. Password: "password",
  68. TaskID: os.Args[1],
  69. ActionType: "subscribe",
  70. }
  71.  
  72. bts, err := json.Marshal(&ctrl)
  73. if err != nil {
  74. fmt.Println(err)
  75. os.Exit(1)
  76. }
  77.  
  78. socket.SendBinary(bts)
  79.  
  80. for {
  81. select {
  82. case <-interrupt:
  83. log.Println("interrupt")
  84. socket.Close()
  85. return
  86. }
  87. }
  88. }
Add Comment
Please, Sign In to add comment