Leitfaden Entwicklungshandbuch

Hot Update des Servermoduls

fibjs http-Server von fibjs ist ein unabhängiges Serverprogramm, das fibjs im Speicher befindet. fibjs bedeutet, dass das Dienstprogramm häufig neu gestartet werden muss, wenn ein Versionsupdate vorliegt.

Nehmen Sie das folgende Serviceprogramm an:

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

web.js Sie web.js direkt in app.js , müssen Sie app.js jedes Mal neu app.js wenn Sie die Anwendung aktualisieren. Gibt es eine Möglichkeit, app.js automatisch die neuesten web.js laden zu lassen, während der Code aktualisiert wird?

Durch das native SandBox Modul von SandBox können wir ein reibungsloses Hot-Update erzielen. app.js Sie einige Änderungen an 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 Beginn eines Zyklus, alle lS wieder require eine web.js Inhalt erzeugte Sicherheitsmodul für svr remounted handler . Wenn der Inhalt in web.js aktualisiert werden muss, müssen Sie nur die Datei ersetzen, um eine reibungslose Aktualisierung des Serverprogramms zu erreichen.