Actualització actualitzada del mòdul de servidor
fibjs
El servidor http és un programa de servidor independent que resideix a la memòria, cosa que significa que sovint cal reiniciar el programa de servei quan hi ha una actualització de versió.
Suposem que hi ha el programa de servei següent:
web.js
controlador de httpapp.js
Entrada de sol·licitud
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
referència directa web.js
, quan cada actualització de les aplicacions s'ha de reiniciar ambdues app.js
, no hi ha manera d'actualitzar el codi simultàniament, de manera que app.js
es carregui automàticament l'últim web.js
?
Podem utilitzar el nadiu de fibjs SandBoxMòdul per aconseguir una actualització en calent suau. Per app.js
fer alguns canvis:
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
Inicieu un cicle, cada 1 s de nou, require
un web.js
mòdul de seguretat de generació de contingut per svr
tornar a muntar-lo handler
. Quan web.js
el temps necessari per actualitzar el contingut, simplement substituïu el fitxer, podeu aconseguir un programa de servidor d’actualitzacions fluït.
👉 [ Enrutament de dominis ]