diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-07-28 19:42:05 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-07-28 19:52:31 +0900 |
| commit | 22ddf340f0b0c8d0cd04c34d9fa1481a1fbf422f (patch) | |
| tree | fab36f8dc1a2be23e331752b3e3d35e10d797ecf /backend/game/ws.go | |
| parent | 7bd55ee264f7eefda6c1f71865a2c6287d7e20fa (diff) | |
| download | iosdc-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.go | 46 |
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 +} |
