Nodejs心跳包(一)简易监控 --学习笔记

爱⌒轻易说出口 提交于 2019-12-05 16:18:32
写JavaScript本身是弱语言,到了Nodejs中也是V8下执行的脚本。本质无法改变。
知识点:
一、心跳包
           心跳包通俗来说就是,让使用者知道当前软件的一个状态。
比如说:BOSS让你干一件事,总体上来说他有两种途径知道你干的情况。
①BOSS不厌其烦的主动问你,干好了没?②你每天定时向BOSS汇报情况。③推送机制。
基于心跳包来说,所以,客户端主动发起请求和服务端主动告诉客户端本质上没什么区别。后续继续学习推送机制。
二、JavaScript面向对象
变量作用域、get、set 访问器 具体的就不多说了,自行搜索去。

基于以上知识,和Nodejs的特性nodejs心跳包程序如下:
HeartBeatService.Js文件
var HeartBeatService = function(app) {
    this.state = null;
    this.instance = null;
    app.get('/heartBeatService', function (req, res) {
        res.end(HeartBeatService.instance.state.toString());
    });
    app.post('/heartBeatService', function (req, res) {
        res.end(HeartBeatService.instance.state.toString());
    });
    //console.log(1);
}
HeartBeatService.prototype = {
    get state() {
        console.log("get:" + this._value)
        return this._value;
    },
    set state(val) {
        this._value = val;
        console.log("set:" + this._value)
    }
}
HeartBeatService.getInstance=function(app)
{
    if(!this.instance){
        this.instance =new HeartBeatService(app);
    }
    return this.instance;
}
HeartBeatService.create=function(app)
{
    //if(!this.instance){
        this.instance =new HeartBeatService(app);
    //}
    return this.instance;
}
module.exports = HeartBeatService;

调用如下:

test.js

var express = require("express");
var app = express();
var heartBeatService=require("./HeartBeatService");
var hbs =heartBeatService.getInstance(app);
timerStart(1000*60);
function  timerStart(millisecond) {
    var timerToken = setInterval(function () {
            console.log("服务端状态:" + hbs.state)
        },
        millisecond
    );
}
app.get('/heartBeatServiceTest', function (req, res) {
    hbs.state = req.query.state;
    console.log(req.query.state);
    res.end("设置完毕:"+ hbs.state);
});
app.listen(8099);

模拟状态设置使用

http://localhost:8099/heartBeatServiceTest?state=false

http://localhost:8099/heartBeatServiceTest?state=true

调用web接口查看状态结果

http://localhost:8099/heartBeatService

调测


nodejs代码下载:http://download.csdn.net/detail/gzy11/9751187




易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!