summaryrefslogtreecommitdiff
path: root/back/Socket/Socket.go
diff options
context:
space:
mode:
Diffstat (limited to 'back/Socket/Socket.go')
-rw-r--r--back/Socket/Socket.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/back/Socket/Socket.go b/back/Socket/Socket.go
new file mode 100644
index 0000000..554674b
--- /dev/null
+++ b/back/Socket/Socket.go
@@ -0,0 +1,57 @@
+package socket
+
+import (
+ "fmt"
+ "net/http"
+
+ "golang.org/x/net/websocket"
+)
+
+func RegisterEndpoints() {
+ http.Handle("/ws", websocket.Handler(handleWS))
+}
+
+func handleWS(conn *websocket.Conn) {
+ fmt.Printf("%v connecting\n", conn.Config().Origin);
+ defer conn.Close()
+
+ // Adding to the pool
+ var connCache = Connection {
+ UUID: "",
+ WS: conn,
+ }
+
+ var regErr = connCache.Register()
+ if regErr != nil {
+ fmt.Printf("Failed to register the connection: %s\n", regErr.Error());
+ return
+ }
+
+ if err := websocket.Message.Send(conn, GetModule()); err != nil {
+ fmt.Printf("Failed to send initial module: %s\n", err.Error())
+ return
+ }
+
+ var buf = make([]byte, 1024)
+ var length, err = conn.Read(buf)
+ if err != nil {
+ fmt.Printf("Connection closed or error: %v\n", err)
+ return
+ }
+ fmt.Printf("Recieved %v from WS\n", string(buf[:length]))
+
+ if err := websocket.Message.Send(conn, []byte("xdx")); err != nil {
+ fmt.Printf("Failed to send initial module: %s\n", err.Error())
+ return
+ }
+
+ for {
+ length, err = conn.Read(buf)
+ if err != nil {
+ fmt.Printf("Connection closed or error: %v\n", err)
+ break
+ }
+ fmt.Printf("Recieved \"%v\" from WS\n", string(buf[:length]))
+ // conn.Write(buf[:length])
+ }
+}