summaryrefslogtreecommitdiff
path: root/tools/websocket.go
diff options
context:
space:
mode:
Diffstat (limited to 'tools/websocket.go')
-rw-r--r--tools/websocket.go42
1 files changed, 40 insertions, 2 deletions
diff --git a/tools/websocket.go b/tools/websocket.go
index e429a6d..575bcd5 100644
--- a/tools/websocket.go
+++ b/tools/websocket.go
@@ -1,9 +1,47 @@
+// Websocket debug tool
+//
+// Usage: ./websocket-linux-amd64 ws://<shelly-ip>/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 (
- "fmt"
+ "log"
+ "net/url"
+ "os"
+ "os/signal"
+
+ "github.com/gorilla/websocket"
)
func main() {
- fmt.Println("Websockets are cool.")
+ 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()
+}
+
+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
}