가이드 개발 가이드

서버 모듈 핫 업데이트

fibjs http 서버는 메모리에 상주하는 독립적인 서버 프로그램이므로 버전 업데이트가 있을 때 서비스 프로그램을 다시 시작해야 하는 경우가 많습니다.

다음 서비스 프로그램이 있다고 가정합니다.

  • web.js http 핸들러
  • app.js 지원서 접수
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();

에서 app.js직접 참조 web.js, 각 업데이트 응용 프로그램, 그들은 모두 다시 시작해야 할 때 app.js, 동시에 코드를 업데이트 할 수있는 방법은 너무, 없다 app.js자동으로 최신로드 web.js그것?

fibjs의 네이티브를 사용할 수 있습니다. SandBox원활한 핫 업데이트를 달성하기 위한 모듈입니다. 하려면 app.js일부 내용을 변경 :

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.jsremounted에 require대한 web.js콘텐츠 생성 보안 모듈이 svr다시 1초마다 주기를 시작합니다 handler. web.js시간이 단순히 파일을 대체 콘텐츠를 업데이트하는 데 필요한, 당신은 부드러운 업데이트 서버 프로그램을 얻을 수 있습니다.

👉 [ 도메인 라우팅 ]