我想如果我的网络连接中断或恢复时能得到通知就更好了,所以我把它放在了Hammerspoon的init.lua中。
ping = nil
previousStatus = nil
function pingCallback(server, eventType, ...)
hs.alert.show(eventType)
if eventType == "receivedPacket"
then
newStatus = "success"
else
if eventType == "didFail" or eventType == "sendPacketFailed"
then
newStatus = "failure"
end
end
if not (newStatus == previousStatus)
then
hs.alert.show(string.format("Network status changed to %s", newStatus))
previousStatus = newStatus
end
end
while(true)
do
ping = hs.network.ping.ping("google.com", 5, 1.0, 2.0, "any", pingCallback)
os.execute("sleep 15")
end
问题出在睡眠上 它让Hammerspoon自己睡觉,使它挂起。我真正需要的是一个线程或计时器,或者启动一个不同的操作系统进程。我应该怎么做?
Hammerspoon有 定时器. 你可以更换你的 while
循环,如。
function pingGoogle()
hs.network.ping.ping("google.com", 5, 1.0, 2.0, "any", pingCallback)
end
googlePinger = hs.timer.new(15, pingGoogle)
googlePinger:start()
一些其他的事情要考虑。