示例#1
0
 public void RequestServerList(LRMRegions searchRegion = LRMRegions.Any)
 {
     if (_isAuthenticated && _connectedToRelay)
     {
         StartCoroutine(GetServerList(searchRegion));
     }
     else
     {
         Debug.Log("You must be connected to Relay to request server list!");
     }
 }
示例#2
0
        IEnumerator GetServerList(LRMRegions region)
        {
            if (!useLoadBalancer)
            {
                string uri = $"http://{serverIP}:{endpointServerPort}/api/compressed/servers";

                using (UnityWebRequest webRequest = UnityWebRequest.Get(uri))
                {
                    webRequest.SetRequestHeader("Access-Control-Allow-Credentials", "true");
                    webRequest.SetRequestHeader("Access-Control-Allow-Headers", "Accept, X-Access-Token, X-Application-Name, X-Request-Sent-Time");
                    webRequest.SetRequestHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
                    webRequest.SetRequestHeader("Access-Control-Allow-Origin", "*");

                    // Request and wait for the desired page.
                    yield return(webRequest.SendWebRequest());

                    var result = webRequest.downloadHandler.text;

#if UNITY_2020_1_OR_NEWER
                    switch (webRequest.result)
                    {
                    case UnityWebRequest.Result.ConnectionError:
                    case UnityWebRequest.Result.DataProcessingError:
                    case UnityWebRequest.Result.ProtocolError:
                        Debug.LogWarning("LRM | Network Error while retreiving the server list!");
                        break;

                    case UnityWebRequest.Result.Success:
                        relayServerList?.Clear();
                        relayServerList = JsonUtilityHelper.FromJson <Room>(result.Decompress()).ToList();
                        serverListUpdated?.Invoke();
                        break;
                    }
#else
                    if (webRequest.isNetworkError || webRequest.isHttpError)
                    {
                        Debug.LogWarning("LRM | Network Error while retreiving the server list!");
                    }
                    else
                    {
                        relayServerList?.Clear();
                        relayServerList = JsonUtilityHelper.FromJson <Room>(result.Decompress()).ToList();
                        serverListUpdated?.Invoke();
                    }
#endif
                }
            }
            else // get master list from load balancer
            {
                yield return(StartCoroutine(RetrieveMasterServerListFromLoadBalancer(region)));
            }
        }
示例#3
0
        /// <summary>
        /// Gets master list from the LB.
        /// This can be optimized but for now it is it's
        /// own separate method, so i can understand wtf is going on :D
        /// </summary>
        /// <returns></returns>
        IEnumerator RetrieveMasterServerListFromLoadBalancer(LRMRegions region)
        {
            string uri = $"http://{loadBalancerAddress}:{loadBalancerPort}/api/masterlist/";

            using (UnityWebRequest webRequest = UnityWebRequest.Get(uri))
            {
                webRequest.SetRequestHeader("x-Region", ((int)region).ToString());
                // Request and wait for the desired page.
                yield return(webRequest.SendWebRequest());

                var result = webRequest.downloadHandler.text;

#if UNITY_2020_1_OR_NEWER
                switch (webRequest.result)
                {
                case UnityWebRequest.Result.ConnectionError:
                case UnityWebRequest.Result.DataProcessingError:
                case UnityWebRequest.Result.ProtocolError:
                    Debug.LogWarning("LRM | Network Error while retreiving the server list!");
                    break;

                case UnityWebRequest.Result.Success:
                    relayServerList?.Clear();
                    relayServerList = JsonUtilityHelper.FromJson <Room>(result).ToList();
                    serverListUpdated?.Invoke();
                    _serverListUpdated = true;
                    break;
                }
#else
                if (webRequest.isNetworkError || webRequest.isHttpError)
                {
                    Debug.LogWarning("LRM | Network Error while retreiving the server list!");
                }
                else
                {
                    relayServerList?.Clear();
                    relayServerList = JsonUtilityHelper.FromJson <Room>(result).ToList();
                    serverListUpdated?.Invoke();
                    _serverListUpdated = true;
                }
#endif
            }
        }