WebPush Server

Wysyłaj powiadomienia WebPush z serwera Delphi. Wbudowane podpisywanie VAPID, szyfrowanie ładunku AES128GCM i punkty końcowe zarządzania subskrypcjami wymagane przez specyfikację.

TsgcWSAPIServer_WebPush

Komponent relying-party WebPush — rejestruj subskrypcje, szyfruj ładunki (RFC 8291), podpisuj żądania za pomocą VAPID (RFC 8292), wysyłaj POST do punktu końcowego push użytkownika.

Klasa komponentu

TsgcWSAPIServer_WebPush

Protokół

WebPush (RFC 8030)

Platformy

Windows, macOS, Linux, iOS, Android

Edycja

Enterprise

Dodaj serwer i wyślij powiadomienie

Skonfiguruj parę kluczy VAPID, podłącz wbudowany TsgcWebPush_Client (lub użyj go bezpośrednio), a następnie wywołaj SendNotification z punktem końcowym subskrypcji i ładunkiem.

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;

Co jest w środku

Kompletny przekaźnik WebPush — zarządza subskrypcjami i wysyła powiadomienia podpisane VAPID i szyfrowane AES128GCM.

Punkty końcowe subskrypcji

Hostuje kontrakt POST /webpush/subscribe + DELETE /webpush/unsubscribe na wbudowanym serwerze HTTP, dzięki czemu klienty przeglądarki mogą rejestrować u ciebie swoje PushSubscription.

Podpisywanie VAPID

Zgodnie z RFC 8292 komponent podpisuje każdy push tokenem JWT ES256 i dołącza klucz publiczny VAPID w nagłówku Crypto-Key. Kontakt podmiotu (mailto:) jest konfigurowalny.

Szyfrowanie aes128gcm

Implementuje szyfrowanie wiadomości RFC 8291: wyprowadza wspólny sekret przez ECDH z p256dh użytkownika, oblicza klucze wyprowadzone przez HKDF, szyfruje za pomocą AES128GCM.

Obsługa rozmiaru ładunku

Dopełnia ładunki do zalecanego maksimum, tak aby długość wiadomości nie mogła być wywnioskowana z szyfrogramu — zgodnie z oczekiwaniami przeglądarek dla usług push.

Wbudowany klient

TsgcWebPush_Client to komponent towarzyszący, który tylko wysyła powiadomienia bez hostowania subskrypcji — przydatny, gdy subskrypcje są zarządzane w osobnym serwisie.

TTL / pilność

Standardowe nagłówki TTL, Urgency i Topic są dostępne jako parametry metody, pozwalając powiedzieć usłudze push, jak długo przechowywać niedostarczone powiadomienia.

Specyfikacje i odniesienia

Wiarygodne źródła protokołu, który implementuje ten komponent.

Dokumentacja i dema

Przejdź bezpośrednio do dokumentacji komponentu, pobierz gotowy do uruchomienia projekt demonstracyjny i pobierz wersję próbną.

Pomoc online — WebPush Pełna dokumentacja właściwości, metod i zdarzeń tego komponentu.
Projekt demonstracyjny — Demos\20.HTTP_Protocol\11.WebPush_Notifications Gotowy do uruchomienia projekt przykładowy. Dostarczany w pakiecie sgcWebSockets — pobierz wersję próbną poniżej.
Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odniesienia do źródeł — tylko ten komponent.
Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki.

Gotowy, żeby wysyłać powiadomienia WebPush?

Pobierz bezpłatną wersję próbną i dodaj WebPush podpisane VAPID do swojego serwera Delphi.