Как реализовать задачу periodi c при инициализации Hammerspoon? - PullRequest
0 голосов
/ 26 мая 2020

Я подумал, что было бы здорово получить уведомление, когда мое сетевое соединение умирает или восстанавливается, поэтому я поместил это в свой инициализацию Hammerspoon. Он спит сам Hammerspoon, заставляя его зависать. Что мне действительно нужно, так это поток или таймер, а может быть, чтобы запустить другой процесс ОС. Что мне делать?

1 Ответ

1 голос
/ 26 мая 2020

Hammerspoon имеет таймер . Вы можете заменить свой while l oop на что-то вроде:

function pingGoogle()
  hs.network.ping.ping("google.com", 5, 1.0, 2.0, "any", pingCallback)
end

googlePinger = hs.timer.new(15, pingGoogle)
googlePinger:start()

Некоторые другие вещи, которые следует учитывать:

  • Запуск / остановка таймера ping на основе Доступность сети . Нет необходимости опрашивать с помощью ping, если маршрут к цели ping не существует.
  • HTTP GET к конечным точкам, используемым крупными поставщиками для их собственных проверок сетевого подключения.
    • Google: http://clients3.google.com/generate_204 - должен иметь код ответа 204 (и я вижу, что средства проверки, которые его используют, также проверяют длину содержимого ответа, равную 0).
    • Microsoft: http://www.msftncsi.com/ncsi.txt - должен иметь ответ 200, а тело ответа должно читать Microsoft NCSI.
...