WebPush-server

Verstuur WebPush-notificaties vanuit een Delphi-server. Ingebouwde VAPID-ondertekening, AES128GCM-payload-versleuteling en de endpoints voor abonnementenbeheer die de specificatie vereist.

TsgcWSAPIServer_WebPush

WebPush-relying-party-component — registreer abonnementen, versleutel payloads (RFC 8291), onderteken requests met VAPID (RFC 8292) en POST naar het push-endpoint van de gebruiker.

Componentklasse

TsgcWSAPIServer_WebPush

Platforms

Windows, macOS, Linux, iOS, Android

Editie

Enterprise

Plaats de server, verstuur een notificatie

Configureer het VAPID-sleutelpaar, koppel de ingebouwde TsgcWebPush_Client (of gebruik die direct) en roep daarna SendNotification aan met het subscription-endpoint en de payload.

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;

Wat zit erin

Een complete WebPush-relay — beheert abonnementen en verstuurt met VAPID ondertekende AES128GCM-versleutelde notificaties.

Subscription-endpoints

Host het contract POST /webpush/subscribe + DELETE /webpush/unsubscribe op de ingebouwde HTTP-server, zodat browser-clients hun PushSubscription bij jou kunnen registreren.

VAPID-ondertekening

Volgens RFC 8292 ondertekent het component elke push met een ES256-JWT en plaatst de VAPID-publieke sleutel in de Crypto-Key-header. Subject-contact (mailto:) is configureerbaar.

aes128gcm-versleuteling

Implementeert message-encryption volgens RFC 8291: leidt het gedeelde geheim af met ECDH tegen de p256dh van de gebruiker, berekent HKDF-afgeleide sleutels en versleutelt met AES128GCM.

Payload-padding

Vult payloads tot het aanbevolen maximum aan, zodat de berichtlengte niet uit de ciphertext kan worden afgeleid — conform wat browser-push-services verwachten.

Ingebouwde client

TsgcWebPush_Client is een verwante component die alleen notificaties verstuurt zonder abonnementen te hosten — handig als je abonnementen in een aparte service leven.

TTL / urgency

De standaardheaders TTL, Urgency en Topic zijn als methode-parameters beschikbaar, zodat je de push-service kunt vertellen hoelang onbestelde notificaties bewaard moeten blijven.

Specificaties & referenties

Autoritatieve bronnen voor het protocol dat dit component implementeert.

Documentatie & demo's

Direct linken naar de componentreferentie, het kant-en-klare demoproject pakken en de proefversie downloaden.

Online help — WebPush Volledige referentie van eigenschappen, methoden en gebeurtenissen voor dit component.
Demoproject — Demos\20.HTTP_Protocol\11.WebPush_Notifications Kant-en-klaar voorbeeldproject. Zit in het sgcWebSockets-pakket — download hieronder de proefversie.
Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi & C++ Builder en primaire bronverwijzingen — alleen dit component.
Gebruikershandleiding (PDF) Uitgebreide handleiding voor elk component in de bibliotheek.

Klaar om WebPush-notificaties te versturen?

Download de gratis proefversie en voeg met VAPID ondertekende WebPush toe aan je Delphi-server.