Guida allo sviluppo della guida

Aggiornamento a caldo del modulo server

fibjs Il server http è un programma server indipendente che risiede in memoria, il che significa che il programma di servizio spesso deve essere riavviato quando è disponibile un aggiornamento della versione.

Supponiamo che ci sia il seguente programma di servizio:

  • web.js http gestore
  • app.js Ingresso per l'applicazione
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();

In app.jsriferimento diretto web.js, quando ogni aggiornamento delle applicazioni, entrambi devono essere riavviati app.js, non c'è modo di aggiornare contemporaneamente il codice, in modo che app.jscarichi automaticamente l'ultimo web.js?

Possiamo usare il nativo di fibjs SandBoxModulo per ottenere un aggiornamento a caldo senza problemi. Per app.jsapportare alcune modifiche:

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.jsAvvia un ciclo, ogni 1s di nuovo requireun web.jsmodulo di sicurezza per la generazione di contenuti per svrrimontare handler. Quando web.jsil tempo necessario per aggiornare il contenuto, è sufficiente sostituire il file, è possibile ottenere un programma server di aggiornamento regolare.

👉 [ Routing del dominio ]