2

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 } } 
]

それで、ユーザーのアイドル状態を検出するのに適していますか? 私が理解しているように、使用できる値は と の 2 つuserですidleidle値は非常に速く繰り返されますが、1userつは混沌とした方法で繰り返されます。私が探しているのは、ユーザーがマウスを動かしていないとき、またはアプリケーションで入力していないとき (私のアプリだけでなく) を知ることです。彼が戻ってきたら、「オンライン」に戻します。それを行う方法をいくつか教えてください。または、コード例をドロップしてください。前もって感謝します。

編集。 私が知っているように、各 OS にはユーザーがアイドル状態であることを検出するための API があります。たとえば、プラットフォームとしての Adob​​e Air にはそれを簡単に行う機能があり、node-ffi を使用したり、モジュールを作成したりすることもできます。さらに、私が知っているように、Chromium もすぐに使用できるこの機能を備えています

4

1 に答える 1

2

os.cpus()のドキュメントによると:

インストールされている各 CPU/コアに関する情報を含むオブジェクトの配列を返します: モデル、速度 (MHz)、および時間 (CPU/コアが費やしたミリ秒数を含むオブジェクト: user、nice、sys、idle、および irq) .

したがって、このtimesフィールドには、CPU コアで費やされたすべての時間と、起動以降の使用状況が表示されます。しかし、これはあなたが探しているものではありません。出力には、特に appjs ウィンドウではなく、システムの CPU 使用率が詳細に示されているためです。

次に、appjs アプリケーションがアクティブ/アイドルであることを確認する方法を説明します。appjsページを確認してください。アプリケーションで使用できるmousemoveや などのイベントがいくつかあります。keydown

  window.addEventListener('keydown', function(e){
  //if last trigger is there remove it and add new trigger
  //else call makeactive()
  });

  window.addEventListener('mousemove', function(e){
  //if last trigger is there remove it and add new trigger
  //else call makeactive()
  });

//To trigger timeout activity do something like this 
setTimeout(function () {
//change icons, set status as away.
}, 60000); // after 60 seconds timeout

//To reset inactivity changes if it is already idle
makeactive(){
//reset icons, set status as active.
}
于 2013-04-06T17:54:34.433 に答える