Guía de desenvolvemento da guía

Actualización en caliente do módulo do servidor

fibjsO servidor http é un programa de servidor independente residente na memoria, o que significa que cando hai unha actualización de versión, o programa de servizo adoita ter que reiniciarse.

Supoñamos que temos o seguinte programa de servizo:

  • web.jsmanejador http
  • app.jsAplicación de entrada
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 a aplicación, débese reiniciar . ¿Hai algunha maneira de cargar automaticamente a máis recente app.jsmentres se actualiza o código ?app.jsweb.js

Podemos usar o nativo de fibjsSandBoxmódulo para conseguir actualizacións rápidas suaves. Fai app.jsalgúns 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.jsIníciase un ciclo en , e rexenérase un módulo seguro a partir do contido requirecada 1 s para volver montar . Cando o contido necesita ser actualizado, só tes que substituír o ficheiro para conseguir unha actualización fluida do programa do servidor.web.jssvrhandlerweb.js

👉【Práctica de aplicacións web de alto rendemento