Guia Guia de desenvolupament

Actualització actualitzada del mòdul de servidor

fibjs El servidor http és un programa de servidor independent que resideix a la memòria, cosa que significa que sovint cal reiniciar el programa de servei quan hi ha una actualització de versió.

Suposem que hi ha el programa de servei següent:

  • web.js controlador de http
  • app.js Entrada de 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, quan cada actualització de les aplicacions s'ha de reiniciar ambdues app.js, no hi ha manera d'actualitzar el codi simultàniament, de manera que app.jses carregui automàticament l'últim web.js?

Podem utilitzar el nadiu de fibjs SandBoxMòdul per aconseguir una actualització en calent suau. Per app.jsfer alguns canvis:

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.jsInicieu un cicle, cada 1 s de nou, requireun web.jsmòdul de seguretat de generació de contingut per svrtornar a muntar-lo handler. Quan web.jsel temps necessari per actualitzar el contingut, simplement substituïu el fitxer, podeu aconseguir un programa de servidor d’actualitzacions fluït.

👉 [ Enrutament de dominis ]