diff options
Diffstat (limited to 'back/Socket/Socket.go')
| -rw-r--r-- | back/Socket/Socket.go | 57 |
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]) + } +} |
