Guide de développement du guide

Mise à jour à chaud du module serveur

fibjs Le serveur http est un programme serveur indépendant qui réside en mémoire, ce qui signifie que le programme de service doit souvent être redémarré lors d'une mise à jour de version.

Supposons qu'il existe le programme de service suivant :

  • web.js gestionnaire http
  • app.js Entrée de l'application
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, lors de chaque mise à jour des applications, elles doivent toutes les deux être redémarrées app.js, il n'y a aucun moyen de mettre à jour simultanément le code, de sorte que app.jsle dernier charge automatiquement web.js?

Nous pouvons utiliser le natif de fibjs SandBoxModule pour obtenir une mise à jour à chaud en douceur. Pour app.jsapporter 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); } // 每 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.jsDémarrez un cycle, toutes les 1s à nouveau requireun web.jsmodule de sécurité de génération de contenu pour le svrremontage handler. Lorsque web.jsle temps nécessaire pour mettre à jour le contenu, remplacez simplement le fichier, vous pouvez obtenir un programme de serveur de mise à jour en douceur.

👉 [ Routage de domaine ]