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

来源:互联网 发布:淘宝买家秀卖家秀搞笑 编辑:程序博客网 时间:2024/05/17 23:21
写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




0 0