日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

node.js 没有转发_如何用Nodejs编写一个定时消息提醒应用?

發布時間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 node.js 没有转发_如何用Nodejs编写一个定时消息提醒应用? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景:

同事告訴我最近一段時間每天上班長時間盯著屏幕工作經常眼睛疼,問我有沒有好用定時提醒功能。我受到啟發,決定用nodejs來實現一個定時提醒應用。

需求分析:

同事是個程序員,熟悉命令行操作,這樣我就可以忽略用戶界面了。只要著重實現幾個個核心功能點就行。例如:創建消息提醒計劃,管理計劃等。拆解一下需求,實現這些功能點我會用到【消息提醒】【定時計劃】【常駐系統后臺】【封裝成 node package】。分析的差不多了,接下來就可以準備著手細化實現方案了。

關于消息提醒:

node-notifier 是一個node package,支持發送跨平臺【macOS , win, Linux】的native notifications。示例代碼:

const notifier = require('node-notifier');// Stringnotifier.notify('Message'); Objectnotifier.notify({ title: 'My notification', message: 'Hello, there!'});

macOS演示效果:

關于定時計劃

node-schedule 是一個處理任務調度的package,可以讓任務按照指定的時間周期計劃來執行。指定時間周期的方式和cron類似。如下為周期指定的方法:

* * * * * *┬ ┬ ┬ ┬ ┬ ┬│ │ │ │ │ ││ │ │ │ │ └ 周幾(0 - 7)(0 或 7 是周日)│ │ │ │ └───── 月(1 - 12)│ │ │ └────────── 日(1 - 31)│ │ └─────────────── 小時(0 - 23)│ └──────────────────── 分鐘(0 - 59)└───────────────────────── 秒(0 - 59, 可選)

node-schedule代碼示例:

const schedule = require('node-schedule');schedule.scheduleJob('0 0 9-18 * * 1-5', function () {//周一到周五9-18點每小時0分0秒執行任務})

關于常駐系統后臺:

想要讓程序一直監聽schedule,就要在系統中開啟一個常駐的nodejs進程。利用nodejs自帶的child_process 模塊創建node子進程。其他的守護進程包也都是通過child_process來實現的例如:foreverjs,PM2等。

示例代碼up.js:

const { spawn } = require('child_process');const path = require('path');const { exit } = require('process');// 開啟node子進程let child = spawn('node', [path.join(__dirname, 'task.js'), options.rule])// 退出父進程exit();

開啟進程之后可以在活動監視器查看到,如圖所示:

接下來要完成命令交互部分,命令行交互用到是的commanderjs這個package。使用它我們可以快速實現命令交互的功能。代碼示例 up:

#!/usr/bin/env nodeconst { exec, spawn } = require('child_process');const { exit } = require('process');const program = require('commander');var fs = require('fs');const kill = require('tree-kill');const path = require('path');const log_file = path.join(__dirname, 'log.txt')const stop = program.command('stop');stop.action(() => { let pids = fs.readFileSync(log_file).toString().trim() if (pids.length != 0) { pids.split('').forEach(function (pid) { if (pid.length > 0) { kill(pid) fs.writeFile(log_file, '', function () { }) } }) console.log('?提醒已經關閉') } else { console.log("??沒有發現任何計劃") }})const start = program.command('start')start.requiredOption('-r, --rule ', '填寫一個消息提醒規則例如:*/30 * * * * *') .action(function (options) { try { let child = spawn('node', [path.join(__dirname, 'task.js'), options.rule]) fs.open(log_file, 'a+', function (err, fd) { fs.write(fd, child.pid + "", function () { }); exit(); }); console.log(`?任務創建成功,執行頻率${options.rule}`); } catch (e) { console.error('spawn ERROR !!'); console.error(e); } })program.parse(process.argv);

到此位置功能已經基本實現了,我已經把package發布到了npm和Github(目前支持macOS,其他平臺還沒有測試)。

安裝:

npm i standup-workday -g

開啟消息定時提醒命令:

up?start??-r?"*/10?*?*?*?*?*"?

關閉:

up stop

視頻演示地址:https://www.ixigua.com/6864153350209241607/

歡迎試用,提出寶貴意見,如果對你有幫助請幫忙轉發此文章~

總結

以上是生活随笔為你收集整理的node.js 没有转发_如何用Nodejs编写一个定时消息提醒应用?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。