WebPush サーバー

Delphi サーバーから WebPush 通知を送信できます。VAPID 署名、AES128GCM ペイロード暗号化、および仕様で定められたサブスクリプション管理エンドポイントが組み込まれています。

TsgcWSAPIServer_WebPush

WebPush リライイングパーティコンポーネント — サブスクリプションの登録、ペイロードの暗号化(RFC 8291)、VAPID による署名(RFC 8292)、ユーザーのプッシュエンドポイントへの POST を行います。

コンポーネントクラス

TsgcWSAPIServer_WebPush

プロトコル

WebPush (RFC 8030)

プラットフォーム

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 で署名し、VAPID 公開鍵を Crypto-Key ヘッダーに含めます。サブジェクトの連絡先(mailto:)は設定可能です。

AES128GCM 暗号化

RFC 8291 のメッセージ暗号化を実装しています。ユーザーの p256dh に対して ECDH で共有秘密鍵を導出し、HKDF で鍵を生成、AES128GCM で暗号化します。

ペイロードサイズ制御

暗号文からメッセージ長を推測できないよう、ペイロードを推奨最大サイズまでパディングします。ブラウザのプッシュサービスが期待する形式に準拠しています。

組み込みクライアント

TsgcWebPush_Client はサブスクリプションをホストせずに通知の送信だけを行う兄弟コンポーネントです。サブスクリプションが別サービスにある場合に便利です。

TTL / 緊急度

標準の TTLUrgencyTopic ヘッダーがメソッドパラメーターとして公開されており、未配信の通知をプッシュサービスがどれだけ保持するかを指定できます。

仕様と参考資料

このコンポーネントが実装するプロトコルの一次資料です。

ドキュメントとデモ

コンポーネントリファレンスへのディープリンク、すぐに実行可能なデモプロジェクト、そして体験版のダウンロードはこちらです。

オンラインヘルプ — WebPush 本コンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。
デモプロジェクト — Demos\20.HTTP_Protocol\11.WebPush_Notifications すぐに実行可能なサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています。下記より体験版をダウンロードしてください。
技術ドキュメント (PDF) 本コンポーネントのみを対象とした機能解説、クイックスタート、Delphi および C++ Builder のコードサンプル、一次資料への参照を収録しています。
ユーザーマニュアル (PDF) ライブラリ内のすべてのコンポーネントを網羅した総合マニュアルです。

WebPush 通知を送信する準備はできましたか?

体験版をダウンロードして、VAPID 署名済みの WebPush を Delphi サーバーに追加しましょう。