示例#1
0
    public async void PingTime()
    {
        string timeText = "";

#if UNITY_WEBGL
        StartCoroutine(LoadPageCoroutine());

        //virgin Coroutine
        IEnumerator LoadPageCoroutine()
        {
            float timer = 0;
            var   www   = UnityWebRequest.Get(serverAdress);

            www.SetRequestHeader("Access-Control-Allow-Credentials", "true");
            www.SetRequestHeader("Access-Control-Allow-Headers", "Accept, X-Access-Token, X-Application-Name, X-Request-Sent-Time");
            www.SetRequestHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
            www.SetRequestHeader("Access-Control-Allow-Origin", "*");
            yield return(www.SendWebRequest());

            //while (!www.isDone | www.error != null)
            //{
            //    timer += Time.deltaTime;
            //    if (timer > timeoutSec)
            //        break;
            //    yield return null;
            //}
            timeText = www?.GetResponseHeader("Date");
            ShowText();
            yield return(null);
        }
#else
        CancellationTokenSource s_cts   = new CancellationTokenSource();
        CancellationToken       c_token = s_cts.Token;
        timeText = await LoadPageAsync();

        ShowText();

        //Chad async
        async Task <string> LoadPageAsync()
        {
            UnityWebRequest www = null;

            try
            {
                s_cts.CancelAfter(timeoutSec * 1000);

                www = await UnityWebRequest.Get(serverAdress);

                await www.SendWebRequest();
            }
            catch (TaskCanceledException)
            {
                Debug.LogError($"Timer error: requset timeout");
            }
            return(www?.GetResponseHeader("Date"));
        }
#endif

        void ShowText()
        {
            _UImanager.ShowCurrentTime(timeText.Equals(string.Empty) ? "Error" : timeText);
            if (!timeText.Equals(string.Empty))
            {
                _UImanager.ShowCurrentTime(timeText);
            }
        }
    }