WebPush Server

Envie notificações WebPush a partir de um servidor Delphi. Assinatura VAPID integrada, criptografia de payload AES128GCM e os endpoints de gerenciamento de assinaturas exigidos pela especificação.

TsgcWSAPIServer_WebPush

Componente WebPush relying-party — registra assinaturas, criptografa payloads (RFC 8291), assina requisições com VAPID (RFC 8292) e faz POST para o endpoint de push do usuário.

Classe do componente

TsgcWSAPIServer_WebPush

Protocolo

WebPush (RFC 8030)

Plataformas

Windows, macOS, Linux, iOS, Android

Edição

Enterprise

Adicione o servidor e envie uma notificação

Configure o par de chaves VAPID, vincule o TsgcWebPush_Client integrado (ou use-o diretamente), depois chame SendNotification com o endpoint de assinatura e o 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;

O que tem por dentro

Um relay WebPush completo — gerencia assinaturas e envia notificações criptografadas AES128GCM assinadas com VAPID.

Endpoints de assinatura

Hospeda o contrato POST /webpush/subscribe + DELETE /webpush/unsubscribe no servidor HTTP integrado, permitindo que clientes de navegador registrem sua PushSubscription.

Assinatura VAPID

Conforme a RFC 8292, o componente assina cada push com um JWT ES256 e inclui a chave pública VAPID no header Crypto-Key. O contato Subject (mailto:) é configurável.

Criptografia aes128gcm

Implementa a criptografia de mensagem RFC 8291: deriva o segredo compartilhado via ECDH com o p256dh do usuário, calcula chaves derivadas por HKDF e criptografa com AES128GCM.

Tratamento do tamanho do payload

Adiciona padding nos payloads até o máximo recomendado para que o tamanho da mensagem não possa ser inferido a partir do texto cifrado — compatível com o que os serviços de push de navegadores esperam.

Cliente integrado

TsgcWebPush_Client é um componente irmão que apenas envia notificações sem hospedar assinaturas — útil quando suas assinaturas ficam em um serviço separado.

TTL / urgência

Os headers padrão TTL, Urgency e Topic são expostos como parâmetros de método, permitindo informar ao serviço de push por quanto tempo reter notificações não entregues.

Especificações & referências

Fontes oficiais do protocolo que este componente implementa.

Documentação & Demos

Acesse a referência do componente, pegue o projeto demo pronto para executar e baixe a versão de avaliação.

Ajuda online — WebPush Referência completa de propriedades, métodos e eventos deste componente.
Projeto demo — Demos\20.HTTP_Protocol\11.WebPush_Notifications Exemplo pronto para executar. Acompanha o pacote sgcWebSockets — baixe a versão de avaliação abaixo.
Documento técnico (PDF) Recursos, início rápido, exemplos de código para Delphi & C++ Builder e referências de fontes primárias — somente deste componente.
Manual do usuário (PDF) Manual completo cobrindo todos os componentes da biblioteca.

Pronto para Enviar Notificações WebPush?

Baixe o trial gratuito e adicione WebPush assinado com VAPID ao seu servidor Delphi.