目的
通过定时调用微信推送接口,实现一对一,一对多用户的实时推送,开机自启动进程
实现效果
难点
定时推送
解决方案:通过node-schedule实现
安装
npm install node-schedule --save // 定时任务
// function scheduleCancel(){
// 执行5s后自动取消
// var counter = 1;
// const j = schedule.scheduleJob(‘* * * * * *‘, function(){
// console.log(‘定时器触发次数:‘ + counter);
// counter++;
// });
// setTimeout(function() {
// console.log(‘定时器取消‘)
// // 定时器取消
// j.cancel();
// }, 5000);
// }
// 每分钟的第30秒触发: ‘30 * * * * *‘
// 每小时的1分30秒触发 :‘30 1 * * * *‘
// 每天的凌晨1点1分30秒触发 :‘30 1 1 * * *‘
// 每月的1日1点1分30秒触发 :‘30 1 1 1 * *‘
// 2016年的1月1日1点1分30秒触发 :‘30 1 1 1 2016 *‘
// 每周1的1点1分30秒触发 :‘30 1 1 * * 1‘
const task = ()=>{
// 每天的19:45:01时候触发
schedule.scheduleJob(‘01 45 19 * * *‘, ()=>{
console.log(‘scheduleCronstyle:‘+ new Date());
// 做点什么
request(url, params); // 推送消息
console.log(‘成功执行‘);
})
}
task()
开机自启动
方式一:通过pm2 windows pm2 开机启动 (windows存在兼容问题,失效)
安装
npm install pm2-windows-startup -g // windows用户安装
npm install pm2 -g // 自动启动
pm2 start main.js // 使用
pm2 list // 查看任务
pm2 save // 保存当前任务
pm2 startup // 开机自启动脚本
pm2 delete all // 清空任务
方式二:通过node-windows
安装
npm install node-windows --save
// 编写index.js文件
var Service = require(‘node-windows‘).Service;
var svc = new Service({
name:‘Atest‘, //服务名称
description:‘测试服务开启‘, //服务描述
script:‘D:/autoPush/autoPush.js‘, //启动的文件路径
wait:‘1‘, //程序崩溃重启时间间隔
grow:‘0.25‘, //重启等待时间的间隔 如1,第二次1.25
maxRestarts:‘40‘ //60s内最大重启次数
});
//监听安装
svc.on(‘install‘,()=>{
svc.start();
console.log(‘服务已开启‘)
});
//卸载
svc.on(‘uninstall‘,()=>{
console.log(‘服务已卸载‘);
});
//只安装一次
svc.on(‘alreadyinstalled‘,()=>{
})
//存在就卸载。node nw.js 安装,再运行一次就是卸载
if(svc.exists) return svc.uninstall()
svc.install();
测试pm2
第一步:执行pm2 start ‘文件名‘
测试完成关闭进程
测试node-windows
第一步:打开文件目录cmd执行 node index.js
第二步:打开任务管理器,看到存在该命名服务,即成功