가이드 개발 가이드

서버 모듈 핫 업데이트

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

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

  • web.jshttp 핸들러
  • 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); } // 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.js에서 사이클이 시작되고 다시 마운트하기 위해 1초 require마다 web.js콘텐츠에서 안전한 모듈이 재생성됩니다 . 콘텐츠 업데이트해야 하는 경우 파일을 교체하면 서버 프로그램이 원활하게 업데이트됩니다.svrhandlerweb.js

👉【고성능 웹 애플리케이션 실습