写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
来源:CSDN
作者:蜗牛水里爬
链接:https://blog.csdn.net/gzy11/article/details/54949531