Материал из Скретч Вики

С помощью блоков, для которых необходимо интернет-соединение, можно разработать детектор интернет-соединения. Определение стабильного интернет-соединения может быть полезно в проекте, использующем облачные переменные.

Способ с таймером

Это простой скрипт для определения стабильного интернет-соединения:

когда щёлкнут по зелёному флагу
повторять всегда 
  если <(перевести (таймер) на (английский v)) = []> , то //пустая строка
    . . . //интернет-соединение нестабильно!
  иначе 
    . . . //интернет-соединение стабильное
  end
  ждать (2) секунд
end

Дополнению перевода нужно интернет-соединение. Без него выдаётся пустая строка, и из-за этого можно определить, пользователь подключен к интернету или нет.

Также дополнение кеширует переводы для убавления нагрузки на сервер, поэтому нам нужно уникальное значение; в данном случае это таймер.

Способ с случайной строкой

Данный способ использует ту же механику, как и способ с таймером, однако вместо таймера используется блок выдать случайное от () до () и список с символами. Данный способ можно использовать, если в проекте уже используется таймер.

Создайте список (символы::list) и добавьте в него какие-либо случайные буквы для скрипта, а также создайте переменную (строка).

когда щёлкнут по зелёному флагу
повторять всегда 
  задать [строка v] значение []
  повторить (выдать случайное от (1) до (длина списка [символы v])) раз
    задать [строка v] значение (объединить (строка) (элемент (выдать случайное от (1) до (длина списка [символы v])) в [символы v]))
  end
  если <(перевести (строка) на (английский v)) = []> , то //пустая строка
    . . . //интернет-соединение нестабильно!
  иначе 
    . . . //интернет-соединение стабильное
  end
  ждать (2) секунд

Определение пинга

С помощью данного способа и таймера можно также определить пинг (время, необходимое для передачи данных). В данном скрипте пинг будет передаваться в переменную (пинг).

когда щёлкнут по зелёному флагу
повторять всегда 
  задать [строка v] значение []
  повторить (выдать случайное от (1) до (длина списка [символы v])) раз
    задать [строка v] значение (объединить (строка) (элемент (выдать случайное от (1) до (длина списка [символы v])) в [символы v]))
  end
  сбросить таймер
  если <(перевести (строка) на (английский v)) = []> , то //пустая строка
    . . . //интернет-соединение нестабильно!
    задать [пинг v] значение [соединение нестабильно]
  иначе 
    . . . //интернет-соединение стабильное
    задать [пинг v] значение (таймер)
  end
  ждать (2) секунд

Пинг будет измеряться в секундах. По желанию можете преобразовать секунды в миллисекунды:

задать [пинг v] значение ((таймер) * (1000))
Информация.png Обратите внимание, что таким образом также проверяется и скорость переводчика, что может значительно повысить пинг.
Cookie-файлы помогают нам предоставлять наши услуги. Используя наши сервисы, вы соглашаетесь с использованием cookie-файлов.