public void RequestLogout()
    {
        if (!IsLogoutRequestPending)
        {
            AsyncJSONRequest            gameListRequest = AsyncJSONRequest.Create(m_gameWorldController.gameObject);
            Dictionary <string, object> request         = new Dictionary <string, object>();

            request["username"] = SessionData.GetInstance().UserName;

            IsLogoutRequestPending = true;

            gameListRequest.POST(
                ServerConstants.logoutRequestURL,
                request,
                (AsyncJSONRequest asyncRequest) =>
            {
                if (asyncRequest.GetRequestState() == AsyncJSONRequest.eRequestState.succeded)
                {
                    JsonData response     = asyncRequest.GetResult();
                    string responseResult = (string)response["result"];

                    if (responseResult == "Success")
                    {
                        m_gameWorldController.OnLogoutComplete();
                    }
                    else
                    {
                        m_gameWorldController.OnRequestFailed(responseResult);
                        Debug.LogError("Logout Request Failed: " + asyncRequest.GetFailureReason());
                    }
                }
                else
                {
                    m_gameWorldController.OnRequestFailed("Connection Failure!");
                    Debug.LogError("Logout Request Failed: " + asyncRequest.GetFailureReason());
                }

                IsLogoutRequestPending = false;
            });
        }
    }