HTMX Engine Server
TsgcHTMX_Engine_Server — HTTP経由のhtmxページ部分スワップリクエストを処理し、接続中のすべてのブラウザにサーバー送信イベント経由で、sgcWebSockets Professional、Enterprise、All-AccessではWebSocket経由で、ライブアウトオブバンドフラグメントをブロードキャストします。
TsgcHTMX_Engine_Server — HTTP経由のhtmxページ部分スワップリクエストを処理し、接続中のすべてのブラウザにサーバー送信イベント経由で、sgcWebSockets Professional、Enterprise、All-AccessではWebSocket経由で、ライブアウトオブバンドフラグメントをブロードキャストします。
htmxのHTTPドリブンな部分更新とサーバープッシュを橋渡しします。サーバー送信イベント、またはsgcWebSockets Professional、Enterprise、All-AccessではWebSocketを使用します。受信したhtmxリクエストはOnHTMXMessageにディスパッチされ、ハンドラはスワップするフラグメントのみを返します。任意のタイミングでBroadcastFragmentを呼び出すと、接続中のすべてのブラウザにライブアウトオブバンド更新をプッシュできます。
TsgcHTMX_Engine_Server
htmxスワップ & ライブサーバープッシュ
Delphi, C++ Builder, .NET
エンジンをサーバーに接続し、OnHTMXMessageで部分スワップリクエストを処理して、BroadcastFragmentを呼び出すことで接続中のすべてのブラウザに更新をプッシュします。
uses
sgcHTMX_Engine_Server;
var
oHTMX: TsgcHTMX_Engine_Server;
begin
oHTMX := TsgcHTMX_Engine_Server.Create(nil);
oHTMX.Server := HTTPServer;
oHTMX.SSE.Enabled := True; // live push over server-sent events
oHTMX.OnHTMXMessage := HandleHTMXRequest;
// 後でどのスレッドからでもKPI更新をプッシュできます:
oHTMX.BroadcastFragment(
'<div id="kpi-revenue" hx-swap-oob="true">' +
CurrToStr(FRevenue) + '</div>');
end;
TsgcHTMX_Engine_Server *oHTMX = new TsgcHTMX_Engine_Server(NULL);
oHTMX->Server = HTTPServer;
oHTMX->SSE->Enabled = true; // live push over server-sent events
oHTMX->OnHTMXMessage = HandleHTMXRequest;
// ライブ更新をプッシュします:
oHTMX->BroadcastFragment(
"<div id=\"kpi-revenue\" hx-swap-oob=\"true\">" +
CurrToStr(FRevenue) + "</div>");
var htmx = new TsgcHTMX_Engine_Server();
htmx.Server = wssServer;
htmx.OnHTMXMessage += HandleHTMXRequest;
// ライブ更新をプッシュします:
htmx.BroadcastFragment(
"<div id=\"kpi-revenue\" hx-swap-oob=\"true\">" +
revenue.ToString("N0") + "</div>");
最もよく使うメンバーです。
このエンジンがアタッチするTsgcHTTPServer。HTTP部分スワップリクエストを処理します。sgcWebSockets Professional、Enterprise、All-Accessでは、TsgcWebSocketHTTPServerを割り当てるとWebSocketプッシュが追加されます。
htmxによってトリガーされたすべてのHTTPリクエストに対して発火するイベント。ハンドラはスワップするフラグメントHTMLのみを返します。
現在接続中のすべてのWebSocketクライアントに対して、htmxのアウトオブバンドペイロードを同時に送信します。
各リクエストに対してホストサーバーから呼び出されます。htmxヘッダーを識別し、OnHTMXMessageにルーティングするか、処理をスルーします。
htmxのアウトオブバンドスワップ属性。フラグメントのidはページ上のターゲット要素のidと一致している必要があります。
BroadcastFragmentはスレッドセーフです。バックグラウンドタイマー、プッシュスレッド、イベントハンドラからロックなしで呼び出せます。
TsgcHTMLAuth を Auth に割り当てると、エンジンはセッション、CSRF チェック、ルートのログインとロールのルールを、すべてのリクエストに適用します。MessageSession は WebSocket 接続のセッションを返します。
SSE.Enabled はイベントストリームを提供し、Template.Transport を htSSE または htAuto にすると、ページはフラグメントを Server-Sent Events で受け取れます。PushFragment と BroadcastFragment は変わりません。
ソケットなしで、リクエストをルーターとエンジンに通します。ページのテストがそれらを呼び出す方法です。