ガイド開発ガイド

サーバーモジュールのホットアップデート

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

👉【高パフォーマンスWebアプリケーション演習