我正在使用 appjs 开发一个聊天应用程序,该应用程序使用 node.js 作为平台。我一直在检测计算机何时处于空闲状态(当用户离开它或不使用它时)。
Node.js 中有 os 模块及其os.cpus()
为每个核心提供此类信息:
[ { model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times:
{ user: 252020,
nice: 0,
sys: 30340,
idle: 1070356870,
irq: 0 } },
{ model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times:
{ user: 306960,
nice: 0,
sys: 26980,
idle: 1071569080,
irq: 0 } },
{ model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times:
{ user: 248450,
nice: 0,
sys: 21750,
idle: 1070919370,
irq: 0 } },
{ model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times:
{ user: 256880,
nice: 0,
sys: 19430,
idle: 1070905480,
irq: 20 } },
{ model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times:
{ user: 511580,
nice: 20,
sys: 40900,
idle: 1070842510,
irq: 0 } },
{ model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times:
{ user: 291660,
nice: 0,
sys: 34360,
idle: 1070888000,
irq: 10 } },
{ model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times:
{ user: 308260,
nice: 0,
sys: 55410,
idle: 1071129970,
irq: 880 } },
{ model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times:
{ user: 266450,
nice: 1480,
sys: 34920,
idle: 1072572010,
irq: 30 } }
]
那么它适合检测用户空闲吗?据我了解,我可以使用两个值:user
and idle
. The idle
值迭代得非常快,但是user
一种以混乱的方式迭代。我正在寻找的是知道用户何时没有移动鼠标或在任何应用程序(不仅是在我的应用程序中)中键入,并且在不活动的某个阈值超时(例如 60 秒)之后,我需要将其状态更改为“离开”当他回来时将其改回“在线”。您能否向我指出一些如何做到这一点的算法,甚至为我提供一些代码示例?
提前致谢。
Edit.据我所知,每个操作系统都有 API 来检测用户是否空闲,例如 Adobe Air 作为平台能够轻松做到这一点,我知道我可以使用 node-ffi 甚至编写一个模块。此外据我所知 Chromium 也有这种能力.