WebPush 服务器

从 Delphi 服务器发送 WebPush 通知。内置 VAPID 签名、AES128GCM 有效载荷加密,以及规范要求的订阅管理端点。

TsgcWSAPIServer_WebPush

WebPush 依赖方组件 — 注册订阅、加密有效载荷(RFC 8291)、使用 VAPID 签名请求(RFC 8292),并将通知推送至用户的推送端点。

组件类

TsgcWSAPIServer_WebPush

支持平台

Windows, macOS, Linux, iOS, Android

版本

Enterprise

部署服务器,发送通知

配置 VAPID 密钥对,附加内嵌的 TsgcWebPush_Client(或直接使用),然后以订阅端点和有效载荷调用 SendNotification。

uses
  sgcWebSocket, sgcWebSocket_Server_APIs;

var
  Server: TsgcWebSocketHTTPServer;
  WebPush: TsgcWSAPIServer_WebPush;
begin
  Server := TsgcWebSocketHTTPServer.Create(nil);
  Server.Port := 8443;
  Server.SSL  := True;

  WebPush := TsgcWSAPIServer_WebPush.Create(nil);
  WebPush.Server := Server;
  WebPush.VAPID.Subject := 'mailto:admin@example.com';
  WebPush.VAPID.PrivateKey.LoadFromFile('vapid-priv.pem');
  WebPush.VAPID.PublicKey.LoadFromFile ('vapid-pub.pem');

  Server.Active := True;

  // later, when you have a subscription record
  WebPush.SendNotification(
    'https://fcm.googleapis.com/wp/...', // endpoint
    'p256dh-public-key', // from PushSubscription.getKey(p256dh)
    'auth-secret', // from PushSubscription.getKey(auth)
    '{"title":"Hello","body":"Notification body"}');
end;

内部功能

完整的 WebPush 中继 — 管理订阅并发送经 VAPID 签名、AES128GCM 加密的通知。

订阅端点

在内嵌 HTTP 服务器上托管 POST /webpush/subscribeDELETE /webpush/unsubscribe 接口,使浏览器客户端能够向您注册其 PushSubscription。

VAPID 签名

遵循 RFC 8292,组件使用 ES256 JWT 为每次推送签名,并在 Crypto-Key 头部包含 VAPID 公钥。联系人主体(mailto:)可配置。

aes128gcm 加密

实现 RFC 8291 消息加密:通过 ECDH 与用户的 p256dh 派生共享密钥,计算 HKDF 派生密钥,并使用 AES128GCM 加密。

有效载荷大小处理

将有效载荷填充至推荐最大值,以防止从密文推断消息长度 — 符合浏览器推送服务的预期。

内嵌客户端

TsgcWebPush_Client 是一个仅负责发送通知而不托管订阅的配套组件 — 适用于订阅信息存储于独立服务的场景。

TTL / 优先级

标准的 TTLUrgencyTopic 头部作为方法参数公开,让您能够告知推送服务未送达通知的保留时长。

规范与参考资料

该组件实现的协议权威来源。

文档与示例

直达组件参考文档、获取即用示例项目并下载试用版。

在线帮助 — WebPush 该组件完整的属性、方法和事件参考文档。
示例项目 — Demos\20.HTTP_Protocol\11.WebPush_Notifications 即用示例项目,包含在 sgcWebSockets 包中 — 请从下方下载试用版。
技术文档(PDF) 功能介绍、快速入门、Delphi 与 C++ Builder 代码示例及原始参考资料 — 仅限此组件。
用户手册(PDF) 涵盖库中每个组件的综合手册。

准备好发送 WebPush 通知了吗?

下载免费试用版,为您的 Delphi 服务器添加经 VAPID 签名的 WebPush 功能。