Leitfaden zur Leitfadenentwicklung

Hot-Update des Servermoduls

fibjsDer http-Server ist ein speicherresidentes, unabhängiges Serverprogramm, was bedeutet, dass bei einem Versionsupdate das Dienstprogramm häufig neu gestartet werden muss.

Angenommen, wir haben das folgende Serviceprogramm:

  • web.jshttp-Handler
  • app.jsBewerbungseingang
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();

Im app.jsdirekten Verweis web.jsmuss die Anwendung jedes Mal neu gestartet werden, wenn sie aktualisiert wird . Gibt es eine Möglichkeit, die neueste Version automatisch zu laden app.js, während der Code aktualisiert wird ?app.jsweb.js

Wir können den nativen Code von fibjs verwendenSandBoxModul, um reibungslose Hot-Updates zu erreichen. Nehmen Sie app.jseinige Änderungen vor an:

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.jsEin Zyklus wird gestartet, und requirealle 1 Sekunde web.jswird aus dem Inhalt ein sicheres Modul zum svrerneuten Mounten neu generiert handler. web.jsWenn der Inhalt aktualisiert werden muss , ersetzen Sie einfach die Datei, um eine reibungslose Aktualisierung des Serverprogramms zu erreichen.

👉【Hochleistungs-Webanwendungspraxis