Server WebPush

Invia notifiche WebPush da un server Delphi. Firma VAPID integrata, cifratura del payload AES128GCM e gli endpoint di gestione delle sottoscrizioni richiesti dalla specifica.

TsgcWSAPIServer_WebPush

Componente relying-party WebPush — registra le sottoscrizioni, cifra i payload (RFC 8291), firma le richieste con VAPID (RFC 8292), effettua POST verso l'endpoint push dell'utente.

Classe componente

TsgcWSAPIServer_WebPush

Protocollo

WebPush (RFC 8030)

Piattaforme

Windows, macOS, Linux, iOS, Android

Edizione

Enterprise

Trascina il server, invia una notifica

Configura la coppia di chiavi VAPID, collega il TsgcWebPush_Client integrato (o usalo direttamente), poi chiama SendNotification con l'endpoint di sottoscrizione e il 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;

Cosa c'è all'interno

Un relay WebPush completo — gestisce le sottoscrizioni e invia notifiche cifrate AES128GCM firmate VAPID.

Endpoint di sottoscrizione

Ospita il contratto POST /webpush/subscribe + DELETE /webpush/unsubscribe sul server HTTP integrato, così i client browser possono registrare presso di te la loro PushSubscription.

Firma VAPID

Secondo RFC 8292 il componente firma ogni push con un JWT ES256 e include la chiave pubblica VAPID nell'header Crypto-Key. Il contatto soggetto (mailto:) è configurabile.

Cifratura aes128gcm

Implementa la cifratura dei messaggi RFC 8291: deriva il segreto condiviso con ECDH contro il p256dh dell'utente, calcola le chiavi derivate HKDF, cifra con AES128GCM.

Gestione dimensione del payload

Aggiunge padding ai payload fino al massimo consigliato, così la lunghezza del messaggio non può essere dedotta dal ciphertext — corrisponde a ciò che si aspettano i servizi push dei browser.

Client integrato

TsgcWebPush_Client è un fratello che invia solo notifiche senza ospitare sottoscrizioni — utile se le tue sottoscrizioni vivono in un servizio separato.

TTL / urgency

Gli header standard TTL, Urgency e Topic sono esposti come parametri di metodo, permettendoti di dire al servizio push per quanto tempo conservare le notifiche non consegnate.

Specifiche e riferimenti

Fonti autorevoli per il protocollo implementato da questo componente.

Documentazione e demo

Collegamenti diretti al riferimento del componente, al progetto demo pronto all'uso e al download della versione di prova.

Guida online — WebPush Riferimento completo di proprietà, metodi ed eventi di questo componente.
Progetto demo — Demos\20.HTTP_Protocol\11.WebPush_Notifications Progetto di esempio pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarica la versione di prova qui sotto.
Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie — solo per questo componente.
Manuale utente (PDF) Manuale completo che copre ogni componente della libreria.

Pronto a inviare notifiche WebPush?

Scarica la versione di prova gratuita e aggiungi WebPush con firma VAPID al tuo server Delphi.