Files
tma-back/controllers/connection.go
2026-01-14 23:10:23 +03:00

56 lines
950 B
Go

package controllers
import (
"log"
"server/models"
"github.com/gorilla/websocket"
)
func (h *Hub) readLoop(conn *websocket.Conn) {
handMessage := models.Message{Type: MSG_WELCOME}
_ = conn.WriteMessage(websocket.BinaryMessage, handMessage.Encode())
var player *models.Player
defer func() {
if player != nil {
h.removePlayer(player.ID)
log.Println("Player left:", player.ID)
}
conn.Close()
}()
for {
_, bytes, err := conn.ReadMessage()
if err != nil {
return
}
msg, err := models.Decode(bytes)
if err != nil {
log.Println(err)
continue
}
switch msg.Type {
case MSG_WELCOME:
if player != nil {
continue
}
player = h.handShake(msg.Payload, conn)
log.Println("Player joined:", player.ID)
case MSG_INPUT:
if player == nil {
continue
}
reader := models.NewReader(msg.Payload)
x := reader.ReadF32()
y := reader.ReadF32()
h.updatePosition(x, y, player)
}
}
}