가이드 개발 가이드

서버 모듈 핫 업데이트

fibjs 의 http 서버는 메모리에 fibjs 하는 독립 서버 프로그램입니다. 즉, 버전이 업데이트 될 때 서비스 프로그램을 종종 다시 시작해야합니다.

다음 서비스 프로그램이 있다고 가정하십시오.

  • 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 시작, 모든 lS require svr web.js handler 대한 web.js 콘텐츠 생성 보안 모듈이 다시 require 합니다. web.js 의 콘텐츠를 업데이트해야하는 경우 서버 프로그램의 원활한 업데이트를 위해 파일 만 교체하면됩니다.