ServerSettings.FindServerAddressForRegion C# (CSharp) Method

FindServerAddressForRegion() public static method

public static FindServerAddressForRegion ( int regionIndex ) : string
regionIndex int
return string
    public static string FindServerAddressForRegion(int regionIndex)
    {
        return ServerSettings.DefaultCloudServerUrl.Replace("app-eu", ServerSettings.CloudServerRegionPrefixes[regionIndex]);
    }

Usage Example

Example #1
0
    IEnumerator PingRegion(CloudServerRegion region)
    {
        // JP can't be pinged at the moment, so we skip it!
        if (region == CloudServerRegion.Japan)
        {
            yield break;
        }

        string hostname = ServerSettings.FindServerAddressForRegion(region);
        string regionIp = ResolveHost(hostname);

        if (string.IsNullOrEmpty(regionIp))
        {
            Debug.LogError("Could not resolve host: " + hostname);
            yield break;
        }

        int   averagePing = 0;
        int   tries       = 3;
        int   skipped     = 0;
        float timeout     = 0.500f; // 500 milliseconds is our max, after this we assume a timeout.

        for (int i = 0; i < tries; i++)
        {
            float startTime = Time.time;
            Ping  ping      = new Ping(regionIp);
            while (!ping.isDone && Time.time < startTime + timeout)
            {
                // Timeout after 500ms: sometimes Unity ping never returns
                yield return(0);
            }
            if (ping.time == -1)
            {
                if (skipped > 5)
                {
                    averagePing += (int)(timeout * 1000) * tries;
                    break;
                }
                else
                {
                    i -= 1; //Sometimes Unity ping doesnt return, we therefor retry a few times..
                    skipped++;
                    continue;
                }
            }

            averagePing += ping.time;
        }

        int regionAverage = averagePing / tries;

        //Debug.LogWarning (hostname + ": " + average + "ms");

        if (regionAverage < lowestRegionAverage || lowestRegionAverage == -1)
        {
            lowestRegionAverage = regionAverage;
            SetRegion(region);
        }
    }
All Usage Examples Of ServerSettings::FindServerAddressForRegion