func HandlerFactory(game *obj.Game) func(http.ResponseWriter, *http.Request) { res := func(w http.ResponseWriter, r *http.Request) { fmt.Println("connection") conn, err := upgrader.Upgrade(w, r, nil) if err != nil { fmt.Println(err) return } player := game.AddPlayer() for { messageType, p, err := conn.ReadMessage() var f interface{} if err != nil { game.RemovePlayer(player) return } err = json.Unmarshal(p, &f) if err != nil { return } response := parseCommand(game, f.(map[string]interface{}), player) if response != nil { if err = conn.WriteMessage(messageType, response); err != nil { game.RemovePlayer(player) return } } } } return res }