가이드 개발 가이드

서버 모듈 핫 업데이트

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.js주기를 시작, 다시 모든 초 컨텐츠 생성 보안 모듈을위한 다시 마운트 . 콘텐츠 업데이트에 필요한 시간이 필요할 파일을 교체하기 만하면 원활한 업데이트 서버 프로그램을 얻을 수 있습니다.requireweb.jssvrhandlerweb.js

👉 [ 도메인 라우팅 ]