HTMX Engine Server
TsgcHTMX_Engine_Server — HTTP経由のhtmxページ部分スワップリクエストを処理し、接続中のすべてのブラウザにWebSocket経由でライブアウトオブバンドフラグメントをブロードキャストします。
TsgcHTMX_Engine_Server — HTTP経由のhtmxページ部分スワップリクエストを処理し、接続中のすべてのブラウザにWebSocket経由でライブアウトオブバンドフラグメントをブロードキャストします。
htmxのHTTPドリブンな部分更新とWebSocketのサーバープッシュを橋渡しします。受信したhtmxリクエストはOnHTMXRequestにディスパッチされ、ハンドラはスワップするフラグメントのみを返します。任意のタイミングでBroadcastFragmentを呼び出すと、接続中のすべてのブラウザにライブアウトオブバンド更新をプッシュできます。
TsgcHTMX_Engine_Server
htmxスワップ & ライブサーバープッシュ
Delphi, C++ Builder, .NET
エンジンをWebSocketサーバーに接続し、OnHTMXRequestで部分スワップリクエストを処理して、BroadcastFragmentを呼び出すことで接続中のすべてのブラウザに更新をプッシュします。
uses
sgcHTMX_Engine_Server;
var
oHTMX: TsgcHTMX_Engine_Server;
begin
oHTMX := TsgcHTMX_Engine_Server.Create(nil);
oHTMX.Server := WSSServer;
oHTMX.OnHTMXRequest := 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 = WSSServer;
oHTMX->OnHTMXRequest = HandleHTMXRequest;
// ライブ更新をプッシュします:
oHTMX->BroadcastFragment(
"<div id=\"kpi-revenue\" hx-swap-oob=\"true\">" +
CurrToStr(FRevenue) + "</div>");
var htmx = new TsgcHTMX_Engine_Server();
htmx.Server = wssServer;
htmx.OnHTMXRequest += HandleHTMXRequest;
// ライブ更新をプッシュします:
htmx.BroadcastFragment(
"<div id=\"kpi-revenue\" hx-swap-oob=\"true\">" +
revenue.ToString("N0") + "</div>");
最もよく使うメンバーです。
このエンジンがアタッチするTsgcWSHTTPServer。HTTP部分スワップリクエストとWebSocketプッシュの両方を処理します。
htmxによってトリガーされたすべてのHTTPリクエストに対して発火するイベント。ハンドラはスワップするフラグメントHTMLのみを返します。
現在接続中のすべてのWebSocketクライアントに対して、htmxのアウトオブバンドペイロードを同時に送信します。
各リクエストに対してホストサーバーから呼び出されます。htmxヘッダーを識別し、OnHTMXRequestにルーティングするか、処理をスルーします。
htmxのアウトオブバンドスワップ属性。フラグメントのidはページ上のターゲット要素のidと一致している必要があります。
BroadcastFragmentはスレッドセーフです。バックグラウンドタイマー、プッシュスレッド、イベントハンドラからロックなしで呼び出せます。