WebBroker + WebSockets + HTTP/2
跨平台的 WebBroker / DataSnap 主机,可在同一 TLS 端口上接受原生 WebSocket 升级和 HTTP/2 流。
跨平台的 WebBroker / DataSnap 主机,可在同一 TLS 端口上接受原生 WebSocket 升级和 HTTP/2 流。
TsgcWSHTTPWebBrokerBridgeServer 的跨平台兄弟组件,在其之上加入 HTTP/2 分帧 — ALPN h2 协商负责升级路径,您的 WebBroker 处理程序保持不变。
TsgcWSHTTP2WebBrokerBridgeServer
Windows, macOS, Linux, iOS, Android
Enterprise
挂载您的 TWebModule,配置 SSLOptions 和 Specifications.HTTP2,然后设置 Active := True — HTTP/1.1、HTTP/2 和 WebSocket 全部共享同一个 TLS 端点。
uses
sgcWebSocket, sgcWebSocket_DataSnap, WebReq, WebModuleUnit1;
var
Server: TsgcWSHTTP2WebBrokerBridgeServer;
begin
if WebRequestHandler <> nil then
WebRequestHandler.WebModuleClass := WebModuleClass;
Server := TsgcWSHTTP2WebBrokerBridgeServer.Create(nil);
Server.Port := 443;
Server.SSL := True;
Server.SSLOptions.CertFile := 'cert.pem';
Server.SSLOptions.KeyFile := 'key.pem';
Server.Specifications.HTTP := True;
Server.Specifications.HTTP2 := True;
Server.Specifications.RFC6455 := True;
Server.Active := True;
end;
基于 OpenSSL Indy 栈的 WebBroker / DataSnap,加入 HTTP/2 分帧 — 一个 TLS 端点,三种协议。
在 TLS 握手期间,服务器会通告 http/1.1 和 h2,由客户端选择其一。WebSocket 升级仍然走 HTTP/1.1 路径。
多个 HTTP/2 流共享一条 TCP 连接 — 单个浏览器标签页可以并行发起数十个 REST 调用,不会产生队头阻塞。
每个 HTTP/2 请求都会被解码并通过 WebBroker 流水线重放,因此现有的 TWebModule、DataSnap REST 和 RAD Server 处理程序无需更改即可工作。
设置 Specifications.RFC6455 := True,将 WebSocket 升级保留在同一端口上。绑定 OnConnect / OnMessage 以处理实时通道。
跨平台的 OpenSSL TLS。对于仅 Windows 的部署,如需使用内核态 TLS,请使用 HTTP.SYS 上的兄弟组件 TsgcWSServer_HTTPAPI_WebBrokerBridge。
对于基于 QUIC 的 HTTP/3,请直接使用 TsgcHTTP3Server — 当您希望为旧版客户端提供基于 TCP 的 HTTP/2、为现代客户端提供基于 QUIC 的 HTTP/3 时,可以将两者搭配使用。