Actualización actualizada do módulo do servidor
fibjs
O servidor http é un programa de servidor independente que reside na memoria, o que significa que moitas veces é necesario reiniciar o programa de servizo cando hai unha actualización de versión.
Supoña que existe o seguinte programa de servizo:
web.js
manipulador de httpapp.js
Entrada de solicitude
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();
En app.js
referencia directa web.js
, cando cada actualización de aplicacións, ambas deben reiniciarse app.js
, non hai forma de actualizar o código simultaneamente, de xeito que app.js
se carga automaticamente o último web.js
?
Podemos usar o nativo de fibjs SandBoxMódulo para conseguir unha actualización en quente suave. Para app.js
facer algúns cambios:
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);
}
// 每 1s 重新载入一遍 ./web.js 文件以更新 srv 的 handler
coroutine.start(function() {
while (true) {
coroutine.sleep(1000);
svr.handler = new_web();
}
})
var svr = new http.Server(8080, new_web());
svr.start();
app.js
Inicia un ciclo, cada 1s de novo require
un web.js
módulo de seguridade de xeración de contido para svr
remontar handler
. Cando web.js
o tempo necesario para actualizar o contido, simplemente substitúa o ficheiro, pode conseguir un programa de servidor de actualización sen problemas.
👉 [ Enrutamento de dominio ]