Guide de développement de guide

Mise à jour à chaud du module serveur

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

Supposons qu'il existe le programme de service suivant:

  • gestionnaire http web.js
  • app.js application app.js
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();

Dans app.js référence directe web.js , lorsque chaque application de mise à jour, ils doivent tous deux redémarrer app.js , il n'y a aucun moyen de mettre à jour le code en même temps, laissez app.js charger automatiquement le dernier web.js ?

Nous pouvons réaliser une mise à jour à chaud fluide grâce au module natif SandBox de fibjs. Apportez quelques modifications à app.js :

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 début d'un cycle, tous lS à nouveau require d' un web.js module de sécurité généré de contenu pour svr remonta handler . Lorsque le contenu de web.js doit être mis à jour, il vous suffit de remplacer le fichier pour obtenir une mise à jour fluide du programme serveur.