From 0753246a4b6e57e5a0f94ee56b445368419fd9f5 Mon Sep 17 00:00:00 2001 From: Zack Scholl Date: Sun, 17 Nov 2019 15:51:10 -0800 Subject: [PATCH] add web relay --- src/webrelay/webrelay.go | 60 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/webrelay/webrelay.go diff --git a/src/webrelay/webrelay.go b/src/webrelay/webrelay.go new file mode 100644 index 00000000..12222ad3 --- /dev/null +++ b/src/webrelay/webrelay.go @@ -0,0 +1,60 @@ +package webrelay + +import ( + "bytes" + "net/http" + + "github.com/gorilla/websocket" + log "github.com/schollz/logger" +) + +func Run(debugString, port string) (err error) { + log.SetLevel(debugString) + http.HandleFunc("/ws", handlews) + http.Handle("/", http.FileServer(http.Dir("html"))) + log.Infof("running on port %s", port) + return http.ListenAndServe(":"+port, nil) +} + +var upgrader = websocket.Upgrader{} // use default options + +func handlews(w http.ResponseWriter, r *http.Request) { + c, err := upgrader.Upgrade(w, r, nil) + if err != nil { + log.Debug("upgrade:", err) + return + } + log.Debugf("connected: %+v", c.RemoteAddr()) + defer c.Close() + + _, message, err := c.ReadMessage() + if err != nil { + log.Debug("read:", err) + return + } + log.Debugf("recv: %s", message) + if bytes.Equal(message, []byte("receive")) { + // start receiving + log.Debug("initiating reciever") + err = receive(c) + if err != nil { + log.Error(err) + } + } + return +} + +func receive(c *websocket.Conn) (err error) { + c.WriteMessage(websocket.TextMessage, []byte("ok")) + for { + var message []byte + _, message, err = c.ReadMessage() + if err != nil { + log.Debug("read:", err) + return + } + log.Debugf("recv: %s", message) + + } + return +}