Guía de desarrollo de guías

Actualización en caliente del módulo de servidor

fibjsEl servidor http es un programa de servidor independiente que reside en la memoria, lo que significa que cuando hay una actualización de versión, a menudo es necesario reiniciar el programa de servicio.

Supongamos que tenemos el siguiente programa de servicio:

  • web.jscontrolador http
  • app.jsEntrada de la aplicación
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.jsreferencia directa web.js, cada vez que se actualiza la aplicación, se debe reiniciar . ¿Hay alguna manera de cargar automáticamente la última versión app.jsmientras se actualiza el código ?app.jsweb.js

Podemos usar el nativo de fibjs.SandBoxMódulo para lograr actualizaciones en caliente sin problemas. Realice app.jsalgunos cambios en:

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.jsSe inicia un ciclo y se regenera un módulo seguro a partir del contenido requirecada 1 segundo para su remontaje . Cuando sea necesario actualizar el contenido, simplemente reemplace el archivo para lograr una actualización sin problemas del programa del servidor.web.jssvrhandlerweb.js

👉【Práctica de aplicaciones web de alto rendimiento