我正在开发一个使用 node.js 作为平台的 appjs 聊天应用程序。我一直在检测计算机何时空闲(当用户离开或不使用它时)。
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
和idle
. 该idle
值迭代得非常快,但它user
以混乱的方式迭代。我正在寻找的是知道用户何时不移动鼠标或不输入任何应用程序(不仅在我的应用程序中)并且在一些阈值超时(例如 60 秒)不活动后我需要将他的状态更改为“离开”当他回来时,将其改回“在线”。您能否指出一些算法如何做到这一点,甚至为我放弃一些代码示例?提前致谢。
编辑。 据我所知,每个操作系统都有 API 来检测用户是否空闲,例如作为平台的 Adobe Air 有能力轻松做到这一点,我知道我可以使用 node-ffi 甚至编写一个模块。此外,据我所知,Chromium 也有这种开箱即用的能力。