Node.js / OS X:当计算机进入睡眠状态时如何通知node.js应用程序

泰勒·麦肯齐

当计算机(正在运行node.js的计算机)进入睡眠或关闭状态时,是否可以让OS X通知我的node.js应用程序?似乎应该如此,但是我还没找到任何与node.js相关的东西。我确实找到了这个,但这是在谈论可可应用。也许我可以让其他一些应用程序(例如Cocoa)接收睡眠通知并将其传递给node.js?

我很乐意听到任何可能给我指明正确方向的建议。

罗伯特克莱普

使用nodobjc(它似乎有效,但是我没有对此进行很好的测试):

'use strict';

const $ = require('nodobjc');

// Load the AppKit framework.
$.framework('AppKit');

// Create delegate that gets notified
let Delegate = $.NSObject.extend('Delegate');

// The function that gets called when OS X is going to sleep.
function receiveSleepNote(self, cmd, notif) {
  console.log('going to sleep');
}

Delegate.addMethod('receiveSleepNote:', 'v@:@', receiveSleepNote);
Delegate.register();

// Instantiate the delegate and set it as observer.
let delegate = Delegate('alloc')('init');
let nc       = $.NSWorkspace('sharedWorkspace')('notificationCenter');

nc(
  'addObserver', delegate,
  'selector'   , 'receiveSleepNote:',
  'name'       , $.NSWorkspaceWillSleepNotification,
  'object'     , null
)

// Set up the runloop.
let app = $.NSApplication('sharedApplication');
function runLoop() {
  let pool = $.NSAutoreleasePool('alloc')('init');
  try {
    app('nextEventMatchingMask', $.NSAnyEventMask.toString(),
        'untilDate',             $.NSDate('distantFuture'),
        'inMode',                $.NSDefaultRunLoopMode,
        'dequeue',               1);
  } catch(e) {
    console.error('run loop error', e.message);
  };
  pool('drain');
  process.nextTick(runLoop);
}
runLoop();

您可以在此处找到您可以观察到的其他类型的通知

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js / OS X:当计算机进入睡眠状态时如何通知node.js应用程序

来自分类Dev

如何分发Node JS应用程序?

来自分类Dev

保持Node JS应用程序运行

来自分类Dev

Realm-js 和 Node Js:应用程序冻结

来自分类Dev

使 node.js 程序阻止系统进入睡眠模式

来自分类Dev

如何同步Node js应用程序,git和Heroku?

来自分类Dev

如何构建Web应用程序node.js

来自分类Dev

如何在Node.js中获取Mac OS计算机名称

来自分类Dev

运行OS X“ EL Capitan”的同一台计算机上的Node.js 4和Node 5

来自分类Dev

Azure Webapp Node.js应用程序无法启动

来自分类Dev

node.js和单页Web应用程序

来自分类Dev

Angular应用程序需要node.js

来自分类Dev

从VPS上的URL访问Node.js应用程序

来自分类Dev

Node.js为应用程序创建DNS名称

来自分类Dev

将Node.js应用程序导入Intellij IDEA

来自分类Dev

作为单个实例运行许多Node js应用程序

来自分类Dev

延迟的工作node.js Web应用程序

来自分类Dev

可以在Node js上运行laravel 5.2应用程序

来自分类Dev

为Node.js应用程序创建.deb

来自分类Dev

AngularJS Node.js应用程序的最佳部署架构

来自分类Dev

测试使用Kue的Node.js应用程序

来自分类Dev

在Node.js中查询应用程序名称

来自分类Dev

在Node.js中部署angularjs应用程序

来自分类Dev

使用websockets和node.js的Web应用程序

来自分类Dev

在Node.js应用程序中遍历'__dirname'

来自分类Dev

AWS Opsworks多个Node.js应用程序?

来自分类Dev

Node.js应用程序中的域驱动设计

来自分类Dev

使用VSCode调试Node.JS CLI应用程序?

来自分类Dev

从Rails应用程序运行node.js代码