Servidor WebPush

Envía notificaciones WebPush desde un servidor Delphi. Firmado VAPID integrado, cifrado de payload AES128GCM y los endpoints de gestión de suscripciones que exige la especificación.

TsgcWSAPIServer_WebPush

Componente relying-party WebPush — registra suscripciones, cifra payloads (RFC 8291), firma peticiones con VAPID (RFC 8292) y envía POST al endpoint push del usuario.

Clase del componente

TsgcWSAPIServer_WebPush

Protocolo

WebPush (RFC 8030)

Plataformas

Windows, macOS, Linux, iOS, Android

Edición

Enterprise

Acopla el servidor y envía una notificación

Configura el par de claves VAPID, vincula el TsgcWebPush_Client embebido (o úsalo directamente) y luego llama a SendNotification con el endpoint de suscripción y el 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;

Qué hay dentro

Un relay WebPush completo — gestiona suscripciones y envía notificaciones cifradas con AES128GCM y firmadas con VAPID.

Endpoints de suscripción

Hospeda el contrato POST /webpush/subscribe + DELETE /webpush/unsubscribe en el servidor HTTP embebido, para que los clientes de navegador puedan registrar su PushSubscription contigo.

Firmado VAPID

Según el RFC 8292 el componente firma cada push con un JWT ES256 e incluye la clave pública VAPID en la cabecera Crypto-Key. El contacto Subject (mailto:) es configurable.

Cifrado aes128gcm

Implementa el cifrado de mensajes del RFC 8291: deriva el secreto compartido con ECDH contra el p256dh del usuario, calcula claves derivadas con HKDF y cifra con AES128GCM.

Gestión del tamaño del payload

Rellena los payloads hasta el máximo recomendado para que la longitud del mensaje no pueda inferirse del ciphertext — coincide con lo que esperan los servicios push de navegador.

Cliente embebido

TsgcWebPush_Client es un hermano que solo envía notificaciones sin hospedar suscripciones — útil si tus suscripciones residen en un servicio aparte.

TTL / urgencia

Las cabeceras estándar TTL, Urgency y Topic se exponen como parámetros del método, lo que te permite indicar al servicio push cuánto retener las notificaciones no entregadas.

Especificaciones y referencias

Fuentes autorizadas para el protocolo que implementa este componente.

Documentación y demos

Accede directamente a la referencia del componente, descarga el proyecto demo listo para ejecutar y descarga la prueba.

Ayuda en línea — WebPush Referencia completa de propiedades, métodos y eventos de este componente.
Proyecto demo — Demos\20.HTTP_Protocol\11.WebPush_Notifications Proyecto de ejemplo listo para ejecutar. Se incluye en el paquete sgcWebSockets — descarga la prueba más abajo.
Documento técnico (PDF) Características, inicio rápido, ejemplos de código para Delphi y C++ Builder y referencias de fuentes primarias — solo este componente.
Manual de usuario (PDF) Manual completo que cubre todos los componentes de la librería.

¿Listo para enviar notificaciones WebPush?

Descarga la prueba gratuita y añade WebPush con firmado VAPID a tu servidor Delphi.