node心跳代码示例,接口超时未被调用,则发出提示

实际应用场景

前端定时调用后端接口,若超时未调用,则向企业微信发送一条消息。

代码示例

var request = require('request');  // 用于发送http请求
var timeOld = new Date().getTime();  // 记录上次请求的时间
var flag = true;  // 超时是否只提示一次的标志变量

// 向企业微信发送信息
function sendToQiyeWechat(msg) {
	request.post(
		{
			url: 'http://xxx.xxxx.xx/xx'  // 企业微信报警接口,这个可以根据自己的需求去编写,参见(https://work.weixin.qq.com/api/doc#90000/90003/90487)
			form: {
				'Touser': '',
				'Toparty': '',
				'Msg': msg
			}
		}, function (err, httpRes) {
			if (err) {
				logger.info("err:", err)
			} else {
				logger.info("Send Successful.")
			}
		})
};


// 心跳机制,每分钟检查一次接口是否超时未被调用
setInterval(function () {
	var timeNow = new Date().getTime();  // 获取当前时间
	var duration = timeNow - timeOld;  // 请求时间间隔(当前时间 - 上次请求时间)
	if (duration > 10*60000 && flag) {  // 如果距离上次请求超过了10分钟,接口未被调用
		flag = false;  // 保证每次只发送一次提示,如果要多次提示,请删去该语句即可
		var msg = '超时未被调用';
		sendToQiyeWechat(msg)  // 向企业微信提示信息
	}
}, 60000);


/**
 * @function web端请求接口
 * @param req 请求
 * @param res 响应
 * @param next
 */
exports.webRequest = function(req, res, next) {
	flag = true;  // 每次请求到来则重新置为真
	req = req.body;  // 获取前端传值
	var msg = '';  // 提示信息
	var code = parseInt(req.code);  // 获取传来的标志码
	if (code === 200) {
		msg = 'success'
	} else {
		msg = 'fail'
	}
	timeOld = new Date().getTime();  // 重写全局变量timeOld(请求时间)
	sendToQiyeWechat(msg)  // 向企业微信提示信息
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值