• node.js 实现微信定时推送


    目的
    通过定时调用微信推送接口,实现一对一,一对多用户的实时推送,开机自启动进程
    实现效果

    难点
    定时推送
    解决方案:通过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:'AwxPush',                //服务名称
        description:'AwxPush',        //服务描述
        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
    第二步:打开任务管理器,看到存在该命名服务,即成功

    愿以往所学皆有所获
  • 相关阅读:
    centos 安装tomcat
    UTF8 的BOM带来的麻烦
    linux 下tomcat开机自启动
    proxool连接池空闲连接中断问题解决
    java判断字符串是否为空的方法总结
    修改my.cnf ,使mysql 的表面不区分大小写
    csc a Wx.NET app.doc
    用Wiz作为灵格斯词典(Lingoes)的生词本
    单词
    使用OKHTTP方式发送POST请求,获取返回的JSON串
  • 原文地址:https://www.cnblogs.com/Azune/p/14276226.html
Copyright © 2020-2023  润新知