code: function performLobbyCommand(msg, ack) {
          if(msg.cmd === MessageType.CreateGame) {
              createCmd(socket, ack);
          } else if(msg.cmd === MessageType.JoinGame) {
              joinCmd(msg, socket, ack);
          } else if(msg.cmd === MessageType.ListGames) {
              listCmd(ack);
          } else if(msg.cmd === MessageType.RegisterUser) {
              registerUser(msg, ack);
          } else if(msg.cmd === MessageType.Disconnect) {
              socket.disconnect();
          } else {
              socket.emit("gameError", "Unexpected command: " + msg.cmd);
          }
      }
docs: Commands: CreateGame Creates (and joins) a new game. ack: { result:          CreateOk, playerId:        player ID, gameDescription: LobbyDescription }  JoinGame Joins an existing game. input: { id: game ID } ack: { result:          JoinOk | JoinGameNotFound | JoinGameFull, playerId:        player ID, if joined gameDescription: LobbyDescription gameState:       game state obj }  ListGames Lists all games, open or not. ack: [ LobbyDescription ]  RegisterUser Moves the player into the lobby. input: { userId: user ID } ack:   nothing  Disconnect Disconnects the client. This is necessary because there's no way to disconnect on the client side using socket.io.