实际应用场景
前端定时调用后端接口,若超时未调用,则向企业微信发送一条消息。
代码示例
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) // 向企业微信提示信息
};