Guide de développement du guide

Mise à jour à chaud du module serveur

fibjsLe 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.jsgestionnaire http
  • app.jsEntré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.jsré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.jslors de la mise à jour du code ?app.jsweb.js

Nous pouvons utiliser le natif de fibjsSandBoxmodule pour obtenir des mises à jour à chaud fluides. Apportez app.jsquelques 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.jsUn cycle est démarré dans , et un module sécurisé est régénéré à partir du contenu requiretoutes 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.jssvrhandlerweb.js

👉【Pratique des applications Web hautes performances