ラップランダーと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の開発の支援も必要です。 最も単純な。 それをテストすることに興味のある人が必要であり、機能のリクエストが必要です。


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



Source: https://habr.com/ru/post/J358202/


All Articles