aboutsummaryrefslogtreecommitdiffhomepage
path: root/backend/game/ws.go
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-07-28 19:42:05 +0900
committernsfisis <nsfisis@gmail.com>2024-07-28 19:52:31 +0900
commit22ddf340f0b0c8d0cd04c34d9fa1481a1fbf422f (patch)
treefab36f8dc1a2be23e331752b3e3d35e10d797ecf /backend/game/ws.go
parent7bd55ee264f7eefda6c1f71865a2c6287d7e20fa (diff)
downloadiosdc-japan-2024-albatross-22ddf340f0b0c8d0cd04c34d9fa1481a1fbf422f.tar.gz
iosdc-japan-2024-albatross-22ddf340f0b0c8d0cd04c34d9fa1481a1fbf422f.tar.zst
iosdc-japan-2024-albatross-22ddf340f0b0c8d0cd04c34d9fa1481a1fbf422f.zip
refactor(backend): move game-related code to game module
Diffstat (limited to 'backend/game/ws.go')
-rw-r--r--backend/game/ws.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/backend/game/ws.go b/backend/game/ws.go
new file mode 100644
index 0000000..2ed17af
--- /dev/null
+++ b/backend/game/ws.go
@@ -0,0 +1,46 @@
+package game
+
+import (
+ "net/http"
+ "time"
+
+ "github.com/gorilla/websocket"
+)
+
+const (
+ writeWait = 10 * time.Second
+ pongWait = 60 * time.Second
+ pingPeriod = (pongWait * 9) / 10
+ maxMessageSize = 512
+)
+
+var upgrader = websocket.Upgrader{
+ ReadBufferSize: 1024,
+ WriteBufferSize: 1024,
+}
+
+func servePlayerWs(hub *GameHub, w http.ResponseWriter, r *http.Request, team string) error {
+ conn, err := upgrader.Upgrade(w, r, nil)
+ if err != nil {
+ return err
+ }
+ client := &GameClient{hub: hub, conn: conn, send: make(chan *Message), team: team}
+ client.hub.register <- client
+
+ go client.writePump()
+ go client.readPump()
+ return nil
+}
+
+func serveWatcherWs(hub *GameHub, w http.ResponseWriter, r *http.Request) error {
+ conn, err := upgrader.Upgrade(w, r, nil)
+ if err != nil {
+ return err
+ }
+ watcher := &GameWatcher{hub: hub, conn: conn, send: make(chan *Message)}
+ watcher.hub.registerWatcher <- watcher
+
+ go watcher.writePump()
+ go watcher.readPump()
+ return nil
+}