HTMX Engine Server
TsgcHTMX_Engine_Server — HTTP를 통해 htmx 부분 페이지 스왑 요청을 처리하고, WebSocket을 통해 연결된 모든 브라우저에 실시간 out-of-band 프래그먼트를 브로드캐스트합니다.
TsgcHTMX_Engine_Server — HTTP를 통해 htmx 부분 페이지 스왑 요청을 처리하고, WebSocket을 통해 연결된 모든 브라우저에 실시간 out-of-band 프래그먼트를 브로드캐스트합니다.
htmx의 HTTP 기반 부분 업데이트와 WebSocket 서버 푸시를 연결합니다. 수신되는 htmx 요청은 OnHTMXMessage로 디스패치되며, 핸들러는 스왑할 프래그먼트만 반환합니다. 언제든지 BroadcastFragment를 호출하여 연결된 모든 브라우저에 실시간 out-of-band 업데이트를 전송하세요.
엔진을 WebSocket 서버에 연결하고, OnHTMXMessage에서 부분 스왑 요청을 처리한 후, BroadcastFragment를 호출하여 연결된 모든 브라우저에 업데이트를 전송하세요.
uses
sgcHTMX_Engine_Server;
var
oHTMX: TsgcHTMX_Engine_Server;
begin
oHTMX := TsgcHTMX_Engine_Server.Create(nil);
oHTMX.Server := WSSServer;
oHTMX.OnHTMXMessage := HandleHTMXRequest;
// later, from any thread, push a KPI update:
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->OnHTMXMessage = HandleHTMXRequest;
// push a live update:
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;
// push a live update:
htmx.BroadcastFragment(
"<div id=\"kpi-revenue\" hx-swap-oob=\"true\">" +
revenue.ToString("N0") + "</div>");
가장 자주 사용하는 멤버.
이 엔진이 연결되는 TsgcHTTPServer로, HTTP 부분 스왑 요청을 처리합니다. WebSocket 서버가 설치되어 있으면 TsgcWSHTTPServer를 할당하여 WebSocket 푸시를 추가할 수 있습니다.
모든 htmx 트리거 HTTP 요청에 대해 발생하는 이벤트로, 핸들러는 스왑할 프래그먼트 HTML만 반환합니다.
현재 연결된 모든 WebSocket 클라이언트에 동시에 out-of-band htmx 페이로드를 전송합니다.
각 요청에 대해 호스트 서버가 호출하며, htmx 헤더를 식별하여 OnHTMXMessage로 라우팅하거나 통과시킵니다.
htmx의 out-of-band 스왑 속성으로, 프래그먼트 id는 페이지의 대상 요소 id와 일치해야 합니다.
BroadcastFragment는 스레드 안전하므로 백그라운드 타이머, 푸시 스레드 또는 이벤트 핸들러에서 잠금 없이 호출할 수 있습니다.
TsgcHTMLAuth를 Auth에 지정하면 엔진이 모든 요청에 세션, CSRF 검사, 라우트의 로그인 및 역할 규칙을 적용합니다. MessageSession은 WebSocket 연결의 세션을 반환합니다.
SSE.Enabled는 이벤트 스트림을 제공하며, Template.Transport가 htSSE 또는 htAuto이면 페이지가 서버 전송 이벤트로 프래그먼트를 받을 수 있습니다. PushFragment와 BroadcastFragment는 그대로입니다.
소켓 없이 라우터와 엔진을 통해 요청을 실행하며, 페이지의 테스트가 이를 호출하는 방식이 바로 이것입니다.