Files
tma-back/controllers/hub.go
Smile Rex 83f356cea9 f
2026-01-14 12:38:03 +03:00

75 lines
1.1 KiB
Go

package controllers
import (
"bytes"
"log"
"net/http"
"server/models"
"github.com/gorilla/websocket"
)
type Hub struct {
Players map[uint32]*models.Player
ServerBuffer []byte
}
func NewHub() *Hub {
return &Hub{
Players: make(map[uint32]*models.Player),
}
}
func (h *Hub) readLoop(conn *websocket.Conn) {
p := &models.Player{
ID: uint32(len(h.Players) + 1),
Conn: conn,
InputX: 0,
InputZ: 0,
}
log.Println("Player connected:", p.ID)
h.Players[p.ID] = p
defer func() {
delete(h.Players, p.ID)
p.Conn.Close()
log.Println("Player disconnected:", p.ID)
}()
for {
_, data, err := p.Conn.ReadMessage()
if err != nil {
return
}
if len(data) < 8 {
continue
}
buf := bytes.NewReader(data)
log.Println(buf)
}
}
func (h *Hub) ws(w http.ResponseWriter, r *http.Request) {
upgrader := websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool { return true },
}
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println(err)
return
}
go h.readLoop(conn)
}
func (h *Hub) Start() {
http.HandleFunc("/ws", h.ws)
log.Fatal(http.ListenAndServe(":8080", nil))
}