Es gibt drei Arten von Nutzern, die darauf warten, dass Ihre Anwendung ihnen etwas mitteilt: den, der gerade auf die Seite schaut, den, dessen Firmenproxy kein WebSocket durchlässt, und den, der den Browser vor zwei Stunden geschlossen hat. sgcWebSockets 2026.10 deckt alle drei ab.
Der Proxy, der kein WebSocket durchlässt
Server-Sent Events sind reines HTTP: ein GET, das offen bleibt, und ein Strom aus Text. Nichts auf dem Weg kann etwas dagegen einwenden. Die sgcHTML-Engine kann ihre Updates jetzt auf diesem Weg übertragen statt über ein WebSocket, und der Seite kann überlassen werden, selbst zu entscheiden:
FEngine.SSE.Enabled := True;
FEngine.SSE.Endpoint := '/events';
FEngine.SSE.PostEndpoint := '/events/send';
FEngine.SSE.ReplaySize := 100;
FTemplate.Transport := htAuto; { htWebSocket, htSSE or htAuto }
Mit htAuto öffnet die Seite ein WebSocket und wechselt von selbst zum Event-Stream, wenn das nicht geht. Der Wiederholungspuffer sorgt dafür, dass ein Leser, der kurz getrennt war, die verpassten Updates nachgeliefert bekommt, statt eine Lücke zu haben.
Der Teil, der eine Unterstreichung verdient: das funktioniert mit dem reinen HTTP-Server. Updates an eine Seite zu pushen erfordert überhaupt keinen WebSocket-Server mehr.
Der Nutzer, der den Browser geschlossen hat
Web Push erreicht einen Browser, der nicht auf Ihrer Seite ist, und sogar einen, der gar nicht läuft. Die Seite abonniert, Ihre Anwendung speichert das Abonnement, wo auch immer sie ihre Daten hält, und ein einziger Aufruf sendet die Benachrichtigung:
uses
sgcHTML_WebPush;
FWebPush := TsgcHTMLWebPush.Create(Self);
FWebPush.Enabled := True;
FWebPush.VAPIDPublicKey := ReadSetting('vapid.public');
FWebPush.VAPIDPrivateKey := ReadSetting('vapid.private');
FWebPush.Subject := 'mailto:info@example.com';
FWebPush.OnSaveSubscription := DoSaveSubscription;
FWebPush.OnLoadSubscriptions := DoLoadSubscriptions;
FWebPush.OnDeleteSubscription := DoDeleteSubscription;
FEngine.WebPush := FWebPush;
FWebPush.Send('user-42', 'Order 1042 shipped',
'It left the warehouse this morning.', '/orders/1042');
Die Bibliothek besitzt das Protokoll: die verschlüsselte Payload, die VAPID-Signatur, die TTL und den Urgency-Header. Ihre Anwendung besitzt die Speicherung, über drei Ereignisse, denn wo Abonnements leben, ist eine Entscheidung, die nur Sie treffen können. Ein Abonnement, das der Push-Dienst zurückgezogen hat, kommt über OnSubscriptionExpired zurück, damit Sie es verwerfen können.
Die Komponente, die zwischen beiden entscheidet
Zwei Kanäle zu haben nützt nur, wenn etwas zwischen ihnen wählt. Die Benachrichtigungskomponente tut das jetzt: Ein Nutzer, der die Seite gerade betrachtet, erhält die Benachrichtigung in der Seite, und einer, der es nicht tut, erhält einen Web Push, wenn die Anwendung sagt, dass das erlaubt ist. Eine Benachrichtigung, ein Aufruf, und der Nutzer wird nicht zweimal informiert.
Und die beiden Komponenten drumherum
Eine Benachrichtigungs-Inbox. Eine Glocke mit einem Ungelesen-Badge und den Benachrichtigungen eines Nutzers, mit Lesen und Leeren, sodass eine verpasste Benachrichtigung keine verlorene Benachrichtigung ist.
Eine Benachrichtigungs-Einstellungstabelle. Wo ein Mensch ankreuzt, wie ihn jede Art von Benachrichtigung erreicht. Es ist der Teil, den jeder aufschiebt, und der Teil, der Sie aus dem Ärger mit Leuten heraushält, die nicht darum gebeten haben, gepusht zu werden.
Beide funktionieren in jeder Edition, über WebSocket oder über Server-Sent Events.
Editionen
Server-Sent Events, die Inbox und die Einstellungstabelle sind Teil von sgcHTML. Web Push selbst, der Teil, der einen geschlossenen Browser erreicht, braucht SGC_WEBPUSH, das sind die Editionen Enterprise und All-Access.
Aktualisierung
Alles hier ist standardmäßig deaktiviert. Eine bestehende Seite behält ihren WebSocket-Transport und rendert dasselbe Markup, bis Sie Transport setzen, ein WebPush zuweisen oder eine der beiden neuen Komponenten auf ein Formular ziehen.
Weiterlesen
- Führen Sie Ihre Delphi-App in ChatGPT und Claude aus
- Verwandeln Sie einen Screenshot in eine Delphi-Webseite
- sgcWebSockets 2026.10, alles andere in dieser Version
Video ansehen
Dazu gibt es ein kurzes Video auf dem eSeGeCe-Kanal.
Fragen, Feedback oder Hilfe bei der Migration? Kontaktieren Sie uns — Sie erhalten eine Antwort von den Leuten, die den Code geschrieben haben.
