Guia de desenvolupament de la guia

Actualització en calent del mòdul del servidor

fibjsEl servidor http és un programa de servidor independent resident a la memòria, el que significa que quan hi ha una actualització de versió, sovint s'ha de reiniciar el programa de servei.

Suposem que tenim el programa de servei següent:

  • web.jsgestor http
  • app.jsEntrada de la sol·licitud
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.jsreferència directa web.js, cada vegada que s'actualitza l'aplicació, s'ha de reiniciar . Hi ha alguna manera de carregar automàticament la darrera app.jsmentre actualitzeu el codi ?app.jsweb.js

Podem utilitzar el natiu de fibjsSandBoxmòdul per aconseguir actualitzacions ràpides sense problemes. Feu app.jsalguns canvis a:

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.jsS'inicia un cicle a , i un mòdul segur es regenera a partir del contingut requirecada 1 s per tornar a muntar . Quan cal actualitzar el contingut, només cal substituir el fitxer per aconseguir una actualització fluida del programa del servidor.web.jssvrhandlerweb.js

👉【Pràctica d'aplicacions web d'alt rendiment