// Websocket debug tool // // Usage: ./websocket-linux-amd64 ws:///rpc // // This tools is intended to support development of the Websocket-based // application programming interface (API) of the Shelly Internet of Things // (IoT) devices. package main import ( "log" "net/url" "os" "os/signal" "syscall" "github.com/gorilla/websocket" ) func main() { log.SetFlags(0) interrupt := make(chan os.Signal, 1) signal.Notify(interrupt, os.Interrupt) var u url.URL = getURL() log.Printf("connecting to %s", u.String()) c, _, err := websocket.DefaultDialer.Dial(u.String(), nil) if (err != nil) { log.Fatal(err) } defer c.Close() Await(syscall.SIGTERM, syscall.SIGINT) } func getURL() url.URL { if (len(os.Args) != 2) { log.Fatalf("Exactly one argument expected but got %d.", len(os.Args) - 1) } maybeURL, err := url.Parse(os.Args[1]) if (err != nil) { log.Fatalf("Cannot parse given URL: %s", os.Args[1]) } return *maybeURL } func Await(signals ...os.Signal) { listener := make(chan os.Signal, 1) signal.Notify(listener, signals...) defer signal.Stop(listener) sig := <-listener log.Printf("Received OS signal '%v'\n", sig) }