From 48e03db9607d3d72398b5169064a0d385d73360c Mon Sep 17 00:00:00 2001 From: leandrofars Date: Tue, 16 Jan 2024 23:45:56 -0300 Subject: [PATCH] initial websockets server --- backend/services/ws/cmd/main.go | 9 +++++ backend/services/ws/go.mod | 10 ++++++ backend/services/ws/go.sum | 6 ++++ backend/services/ws/internal/ws/ws.go | 48 +++++++++++++++++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 backend/services/ws/cmd/main.go create mode 100644 backend/services/ws/go.mod create mode 100644 backend/services/ws/go.sum create mode 100644 backend/services/ws/internal/ws/ws.go diff --git a/backend/services/ws/cmd/main.go b/backend/services/ws/cmd/main.go new file mode 100644 index 0000000..4b21c5b --- /dev/null +++ b/backend/services/ws/cmd/main.go @@ -0,0 +1,9 @@ +package main + +import ( + "github.com/OktopUSP/oktopus/ws/internal/ws" +) + +func main() { + ws.StartNewServer() +} diff --git a/backend/services/ws/go.mod b/backend/services/ws/go.mod new file mode 100644 index 0000000..5fdd0ba --- /dev/null +++ b/backend/services/ws/go.mod @@ -0,0 +1,10 @@ +module github.com/OktopUSP/oktopus/ws + +go 1.21.6 + +require ( + github.com/gorilla/mux v1.8.1 + github.com/gorilla/websocket v1.5.1 +) + +require golang.org/x/net v0.17.0 // indirect diff --git a/backend/services/ws/go.sum b/backend/services/ws/go.sum new file mode 100644 index 0000000..8b329b1 --- /dev/null +++ b/backend/services/ws/go.sum @@ -0,0 +1,6 @@ +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= diff --git a/backend/services/ws/internal/ws/ws.go b/backend/services/ws/internal/ws/ws.go new file mode 100644 index 0000000..c9b18fc --- /dev/null +++ b/backend/services/ws/internal/ws/ws.go @@ -0,0 +1,48 @@ +package ws + +import ( + "log" + "net/http" + + "github.com/gorilla/mux" + "github.com/gorilla/websocket" +) + +var upgrader = websocket.Upgrader{ + ReadBufferSize: 1024, + WriteBufferSize: 1024, + CheckOrigin: func(r *http.Request) bool { return true }, +} + +func StartNewServer() { + r := mux.NewRouter() + r.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) { + + conn, err := upgrader.Upgrade(w, r, nil) + if err != nil { + log.Println(err) + } + for { + messageType, p, err := conn.ReadMessage() + if err != nil { + log.Println(err) + return + } + log.Println(string(p)) + + if err := conn.WriteMessage(messageType, p); err != nil { + log.Println(err) + return + } + + } + }) + + log.Println("Websockets server running") + + err := http.ListenAndServe(":8080", r) + if err != nil { + log.Fatal("ListenAndServe: ", err) + } + +}