Aggiornamento a caldo del modulo server
fibjs
Il server http è un programma server indipendente residente in memoria, il che significa che in caso di aggiornamento della versione, spesso è necessario riavviare il programma di servizio.
Supponiamo di avere il seguente programma di servizio:
web.js
gestore httpapp.js
Ingresso della domanda
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();
In app.js
riferimento diretto web.js
, ogni volta che l'applicazione viene aggiornata, deve essere riavviata . C'è un modo per caricare automaticamente l'ultima versione app.js
durante l'aggiornamento del codice ?app.js
web.js
Possiamo usare il nativo di fibjsSandBoxmodulo per ottenere aggiornamenti rapidi e fluidi. Apporta app.js
alcune modifiche a:
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
Viene avviato un ciclo in e un modulo sicuro viene rigenerato dal contenuto require
ogni 1 s per il rimontaggio . Quando è necessario aggiornare il contenuto, è sufficiente sostituire il file per ottenere un aggiornamento fluido del programma server.web.js
svr
handler
web.js