Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "encoding/json"
- "fmt"
- "log"
- "os"
- "os/signal"
- "github.com/sacOO7/gowebsocket"
- )
- type wsControl struct {
- // users can authenticate either by JWT tokens or username/password
- JWTToken string `json:"jwt_token"`
- Username string `json:"username"`
- Password string `json:"password"`
- ActionType string `json:"action_type"` // subscribe, unsubscribe
- TaskID string `json:"task_id"`
- }
- func main() {
- interrupt := make(chan os.Signal, 1)
- signal.Notify(interrupt, os.Interrupt)
- socket := gowebsocket.New("ws://localhost:8700/v2/ws/logs")
- log.Println("connecting...")
- socket.OnConnectError = func(err error, socket gowebsocket.Socket) {
- log.Fatal("Received connect error - ", err)
- }
- socket.OnConnected = func(socket gowebsocket.Socket) {
- log.Println("Connected to server")
- }
- socket.OnTextMessage = func(message string, socket gowebsocket.Socket) {
- log.Printf("Received message: '%s', length: %d \n", message, len(message))
- }
- socket.OnPingReceived = func(data string, socket gowebsocket.Socket) {
- log.Println("Received ping - " + data)
- }
- socket.OnPongReceived = func(data string, socket gowebsocket.Socket) {
- log.Println("Received pong - " + data)
- }
- socket.OnDisconnected = func(err error, socket gowebsocket.Socket) {
- log.Println("Disconnected from server ")
- return
- }
- socket.Connect()
- log.Println("sending control message")
- if len(os.Args) != 2 {
- log.Println("missing task ID argument")
- os.Exit(1)
- }
- ctrl := wsControl{
- Username: "admin",
- Password: "password",
- TaskID: os.Args[1],
- ActionType: "subscribe",
- }
- bts, err := json.Marshal(&ctrl)
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
- socket.SendBinary(bts)
- for {
- select {
- case <-interrupt:
- log.Println("interrupt")
- socket.Close()
- return
- }
- }
- }
Add Comment
Please, Sign In to add comment