서버 모듈 핫 업데이트
fibjs
http 서버는 메모리 상주 독립 서버 프로그램이므로 버전 업데이트 시 서비스 프로그램을 다시 시작해야 하는 경우가 많습니다.
다음과 같은 서비스 프로그램이 있다고 가정합니다.
web.js
http 핸들러app.js
신청접수
1
2
3
4
5
6// web.js
var _ver = new Date();
module.exports = function (r) {
r.response.write("Hello, new word @ " + _ver);
}
1
2
3
4
5
6
7
8
9// app.js
var http = require("http");
var vm = require("vm");
var coroutine = require("coroutine");
var webServer = require("./web");
var svr = new http.Server(8080, webServer);
svr.start();
app.js
직접 참조 의 경우 web.js
, 애플리케이션이 업데이트될 때마다 다시 시작해야 하는데, app.js
코드를 업데이트하면서 app.js
최신 버전을 자동으로 로드 할 수 있는 방법이 있나요 web.js
?
우리는 fibjs의 네이티브를 사용할 수 있습니다SandBox원활한 핫 업데이트를 달성하기 위한 모듈입니다. app.js
다음 사항을 일부 변경 하세요 .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23// app.js
var http = require("http");
var vm = require("vm");
var coroutine = require("coroutine");
// var webServer = require("./web");
function new_web() {
return new vm.SandBox({
mq: require("mq")
}).require("./web.js", __dirname);
}
// update svr.handler every 1 second.
coroutine.start(function() {
while (true) {
coroutine.sleep(1000);
svr.handler = new_web();
}
})
var svr = new http.Server(8080, new_web());
svr.start();
app.js
에서 사이클이 시작되고 다시 마운트하기 위해 1초 require
마다 web.js
콘텐츠에서 안전한 모듈이 재생성됩니다 . 콘텐츠 를 업데이트해야 하는 경우 파일을 교체하면 서버 프로그램이 원활하게 업데이트됩니다.svr
handler
web.js