Serveur WebPush

Envoie des notifications WebPush depuis un serveur Delphi. Signature VAPID intégrée, chiffrement AES128GCM des charges utiles et endpoints de gestion d'abonnements requis par la spécification.

TsgcWSAPIServer_WebPush

Composant relying-party WebPush — enregistre les abonnements, chiffre les charges utiles (RFC 8291), signe les requêtes avec VAPID (RFC 8292), POST vers l'endpoint push de l'utilisateur.

Classe du composant

TsgcWSAPIServer_WebPush

Protocole

WebPush (RFC 8030)

Plateformes

Windows, macOS, Linux, iOS, Android

Édition

Enterprise

Dépose le serveur, envoie une notification

Configure la paire de clés VAPID, attache le TsgcWebPush_Client embarqué (ou utilise-le directement), puis appelle SendNotification avec l'endpoint d'abonnement et la charge utile.

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;

Ce qu'il contient

Un relais WebPush complet — gère les abonnements et envoie des notifications signées VAPID et chiffrées AES128GCM.

Endpoints d'abonnement

Héberge le contrat POST /webpush/subscribe + DELETE /webpush/unsubscribe sur le serveur HTTP embarqué, pour que les clients navigateur puissent enregistrer leur PushSubscription auprès de toi.

Signature VAPID

Conformément à RFC 8292, le composant signe chaque push avec un JWT ES256 et inclut la clé publique VAPID dans l'en-tête Crypto-Key. Le contact du subject (mailto:) est configurable.

Chiffrement aes128gcm

Implémente le chiffrement de message RFC 8291 : dérive le secret partagé par ECDH contre le p256dh de l'utilisateur, calcule les clés dérivées HKDF, chiffre avec AES128GCM.

Gestion de la taille de charge utile

Remplit les charges utiles jusqu'au maximum recommandé pour que la longueur du message ne puisse pas être déduite du texte chiffré — correspond à ce qu'attendent les services push des navigateurs.

Client embarqué

TsgcWebPush_Client est un composant frère qui se contente d'envoyer des notifications sans héberger d'abonnements — utile si tes abonnements vivent dans un service séparé.

TTL / urgence

Les en-têtes standards TTL, Urgency et Topic sont exposés en tant que paramètres de méthode, te permettant d'indiquer au service push pendant combien de temps conserver les notifications non livrées.

Spécifications et références

Sources de référence pour le protocole que ce composant implémente.

Documentation et démos

Lien direct vers la référence du composant, récupère le projet de démo prêt à l'emploi et télécharge l'essai.

Aide en ligne — WebPush Référence complète des propriétés, méthodes et événements de ce composant.
Projet de démo — Demos\20.HTTP_Protocol\11.WebPush_Notifications Projet d'exemple prêt à l'emploi. Livré avec le paquet sgcWebSockets — télécharge l'essai ci-dessous.
Document technique (PDF) Fonctionnalités, démarrage rapide, exemples de code pour Delphi et C++ Builder, et références de sources primaires — ce composant uniquement.
Manuel utilisateur (PDF) Manuel complet couvrant chaque composant de la bibliothèque.

Prêt à envoyer des notifications WebPush ?

Télécharge l'essai gratuit et ajoute WebPush signé VAPID à ton serveur Delphi.