Files
tma-back/main.go
Smile Rex 12e789b22e add log
2026-01-22 09:31:16 +03:00

91 lines
1.6 KiB
Go

package main
import (
"log"
"net/http"
"github.com/gorilla/websocket"
)
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool { return true },
}
func ServeWS(room *Room, w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
return
}
var auth AuthMessage
if err := conn.ReadJSON(&auth); err != nil || auth.Type != "auth" {
conn.Close()
return
}
data, ok := VerifyTelegramInitData(auth.InitData, "7697757472:AAESD9HfkWwbIZe-HXR7IazUShr69hZTLmE")
if !ok {
conn.Close()
return
}
log.Println("Client connected! \ninitData: ", data)
userID := data["user.id"]
username := data["user.username"]
if username == "" {
username = data["user.first_name"]
}
if username == "" {
username = "user_" + userID
}
player := &Player{
ID: userID,
Username: username,
Conn: conn,
X: 180,
Y: 320,
}
room.Players[player.ID] = player
player.Conn.WriteJSON(map[string]any{
"type": "init",
"payload": map[string]string{
"id": player.ID,
},
})
go readLoop(room, player)
}
func readLoop(room *Room, player *Player) {
for {
var msg InputMessage
err := player.Conn.ReadJSON(&msg)
if err != nil {
delete(room.Players, player.ID)
player.Conn.Close()
return
}
msg.PlayerID = player.ID
room.Input <- msg
}
}
func main() {
room := NewRoom()
go room.Run()
http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
ServeWS(room, w, r)
})
log.Println("Server started on :8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}