ラップランダーとHTTP







これは、実際のラプランダー(1つの 'p')についてではありません。 これは、LAppSマイクロサービスアプリケーションサーバーに関するものです。







興味があれば、猫をお願いします。







LAppSに関する最初の公開からわずか6日経過しました 。 この6日間で、LAppSはバージョン0.6.2に更新され、いくつかの便利な機能を取得しました。







大きな変化



これで、着信WebSocketメッセージのキューに依存しないサービスを実行できます。 これらのサービスの呼び出し方法がよくわかりません。

スタンドアロン、分離、内部? これらのサービスの主なポイントは、それらが「リーディング」であるということです。 フローアプリケーションを定義します。 彼らは独立して外界との相互作用のルールを確立します。 LAppSのサービスは、以前はIOWorker I / Oをブロックしませんでしたが、WebSocket従属メッセージキューという1種類のサービスしかありませんでした。







例として、同様のサービスでLAppSを実行するHTTPサーバーコードの実行を提案したいと思います。 このために、 KeplerプロジェクトのXavante HTTPサーバーが使用されます(以下を参照)。







その他の機能





「Lapplanders」の下でXavanteを起動します



警告: xavanteサーバーは、SSLサポートのないHTTP 1.1サーバーです(つまり、トラフィックのバランスと暗号化のために、nginxまたはH2Oの形式のSSLフロントエンドが必要です)。 ここでは、フロントエンドのセットアップは考慮されていません。







これに必要なもの





サービスコードhttp.lua



コードはxavante manualからコピーされ、LAppSサービスコードに貼り付けられます。







local xavante = require "xavante" local hfile = require "xavante.filehandler" local hredir = require "xavante.redirecthandler" http = {} http.__index = http http["init"]=function() webDir = "/tmp/test/"; end http["mustStop"]=function() return must_stop() end http["run"]=function() local simplerules = { { -- URI remapping example match = "^[^%./]*/$", with = hredir, params = {"index.html"} }, { match = ".", with = hfile, params = {baseDir = webDir} } } xavante.HTTP{ server = {host = "*", port = 80}, defaultHost = { rules = simplerules } } xavante.start(http.mustStop,1); end return http
      
      





LAppSを起動する前に



なぜなら xavanteの場合、htmlファイルのファイルシステムのルートを指定しましたlua webDir = "/tmp/test/";



、このディレクトリにindex.htmlを配置する必要があります







便利なものと快適なものを組み合わせて、 サンプルのclient.html(名前を変更)をcbor.js.ライブラリと一緒に(名前を変更)しましょう。







このクライアントは3つのサービスを使用します。









したがって、これらの4つのサービス( xavanteを含む)の構成ファイルを作成します。







 { "directories": { "applications": "apps", "app_conf_dir": "etc", "tmp": "tmp", "workdir": "workdir" }, "services": { "echo_lapps" : { "internal" : false, "request_target" : "/echo_lapps", "protocol" : "LAppS", "instances" : 3, "max_inbound_message_size" : 1024 }, "http": { "internal": true, "instances": 1 }, "time_broadcast": { "internal": true, "instances": 1 }, "broadcast_blob": { "internal": true, "instances": 1 } } }
      
      





設定(lapps.json)は、/ opt / lapps / etc / conf /に配置する必要があります。







debパッケージからLAppSをインストールした場合、デモアプリケーション自体をインストールする必要があります。 ソースからインストールした場合は、コマンドmak install-examplesを入力するだけです。







その後、Laplandersを起動します:/ opt / lapps / bin / lapps







デーモンモードで起動するには、-dオプションを追加できます。







ブラウザでhttp:// localhostを実行すると(インストールがlocalhostにあった場合)、アプリケーションの動作(CPDVなど)を確認できます。echo-r​​psバーチャートの移動、時間通知、インスペクターを開くと、コンソールに表示されるblob 。







興味深い(またはそうでない)詳細



http.luaサービスコードでは、 must_stop()グローバル関数の呼び出しに注目できます。 LAppSがアプリケーションを停止したい場合、この関数はtrueを返します。 この関数は、初期化される前にすべての分離されたサービスに注入されます。







分離されたサービスのインターフェイスは簡素化されています。 これらはすべて同じLuaモジュールですが、それらで宣言する必要があるのは、 init()およびrun()の 2つのメソッドだけです。 それらの名前から明らかなように、最初のものは初期化コード、2番目はサービスの実行に使用されます。







私は計画があります:









また、LAppSの開発の支援も必要です。 最も単純な。 それをテストすることに興味のある人が必要であり、機能のリクエストが必要です。







原則として、 多くの計画がありますが、多分他の誰かが私には見えない何かから利益を得るでしょう。








All Articles