Mise à jour à chaud du module serveur
fibjs
Le serveur http est un programme serveur indépendant résidant en mémoire, ce qui signifie qu'en cas de mise à jour de version, le programme de service doit souvent être redémarré.
Supposons que nous ayons le programme de service suivant :
web.js
gestionnaire httpapp.js
Entrée des candidatures
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
référence directe web.js
, chaque fois que l'application est mise à jour, elle doit être redémarrée . Existe-t-il un moyen de charger automatiquement la dernière version app.js
lors de la mise à jour du code ?app.js
web.js
Nous pouvons utiliser le natif de fibjsSandBoxmodule pour obtenir des mises à jour à chaud fluides. Apportez app.js
quelques modifications à :
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
Un cycle est démarré dans , et un module sécurisé est régénéré à partir du contenu require
toutes les 1 s pour être remonté . Lorsque le contenu doit être mis à jour, remplacez simplement le fichier pour obtenir une mise à jour fluide du programme serveur.web.js
svr
handler
web.js