new server
This commit is contained in:
61
main.go
61
main.go
@@ -1,10 +1,63 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"server/controllers"
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/gorilla/websocket"
|
||||
)
|
||||
|
||||
func main() {
|
||||
hub := controllers.NewHub()
|
||||
hub.Start()
|
||||
var upgrader = websocket.Upgrader{
|
||||
CheckOrigin: func(r *http.Request) bool { return true },
|
||||
}
|
||||
|
||||
func ServeWS(room *Room, w http.ResponseWriter, r *http.Request) {
|
||||
conn, _ := upgrader.Upgrade(w, r, nil)
|
||||
|
||||
id := uuid.New().String()
|
||||
player := &Player{
|
||||
ID: id,
|
||||
Conn: conn,
|
||||
X: 180,
|
||||
Y: 320,
|
||||
}
|
||||
|
||||
room.Players[id] = player
|
||||
|
||||
player.Conn.WriteJSON(map[string]any{
|
||||
"type": "init",
|
||||
"payload": map[string]string{
|
||||
"id": 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)
|
||||
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))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user