/// <summary>
        /// Handler for the RequestPlayNow message.
        /// </summary>
        /// <param name="netMsg">Network message that was received.</param>
        protected virtual void OnPlayNowRequested(NetworkMessage netMsg)
        {
            var msg = netMsg.ReadMessage <RequestPlayNowMessage>();

            if (msg != null)
            {
                var game = registeredGameServers.Find(x => string.IsNullOrEmpty(x.password) && x.numPlayers < x.maxPlayers);
                if (game != null)
                {
                    var responseMsg = new ResponseJoinGameRoomMessage();
                    responseMsg.success = true;
                    responseMsg.ip      = game.ip;
                    responseMsg.port    = game.port;
                    netMsg.conn.Send(GameRoomsNetworkProtocol.ResponseJoinGameRoom, responseMsg);
                }
                else
                {
                    var requestMsg = new RequestCreateGameRoomMessage();
                    requestMsg.playerConnectionId = netMsg.conn.connectionId;
                    requestMsg.name       = "Default game";
                    requestMsg.maxPlayers = 4;
                    requestMsg.password   = null;
                    CreateGameRoom(netMsg.conn, requestMsg);
                }
            }
        }
        /// <summary>
        /// Handler for the RequestJoinGameRoom message.
        /// </summary>
        /// <param name="netMsg">Network message that was received.</param>
        protected virtual void OnJoinGameRoomRequested(NetworkMessage netMsg)
        {
            var msg = netMsg.ReadMessage <RequestJoinGameRoomMessage>();

            if (msg != null)
            {
                var gameServer  = registeredGameServers.Find(x => x.id == msg.id);
                var responseMsg = new ResponseJoinGameRoomMessage();
                var success     = true;
                if (gameServer != null)
                {
                    if (!string.IsNullOrEmpty(gameServer.password))
                    {
                        if (msg.password != gameServer.password)
                        {
                            success           = false;
                            responseMsg.error = JoinGameRoomError.InvalidPassword;
                        }
                    }

                    if (gameServer.numPlayers == gameServer.maxPlayers)
                    {
                        success           = false;
                        responseMsg.error = JoinGameRoomError.GameFull;
                    }
                }
                else
                {
                    success           = false;
                    responseMsg.error = JoinGameRoomError.GameExpired;
                }

                if (success)
                {
                    responseMsg.ip   = gameServer.ip;
                    responseMsg.port = gameServer.port;
                }

                responseMsg.success = success;
                netMsg.conn.Send(GameRoomsNetworkProtocol.ResponseJoinGameRoom, responseMsg);
            }
        }