Das Push-Model ist in der Anwendungsprogrammierung ein Entwurfsmuster zur Datenübertragung, bei dem der Datenlieferant die Daten überwacht. Erkennt dieser Änderungen, sendet er die geänderten Werte an den Datenempfänger. Der Empfänger verhält sich passiv und wartet, nachdem er sich nach dem Beobachter-Muster angemeldet hat, auf neue Werte. Das Gegenteil ist das Pull-Model.
Vorteile:
Nachteile:
Der Webpush-Vorschlag der Internet Engineering Task Force ist ein einfaches Protokoll, um Echtzeit-Ereignisse wie eingehende Anrufe oder Nachrichten zu übermitteln, die zeitnah zugestellt (oder "gepusht") werden können. Das Protokoll verwendet HTTP Version 2 und konsolidiert alle Echtzeit-Ereignisse in einer einzigen Sitzung, was eine effizientere Nutzung der Netzwerk- und Funkressourcen gewährleistet. Ein einziger Dienst konsolidiert alle Ereignisse und verteilt diese Ereignisse an die Anwendungen, sobald sie eintreffen. Doppelte Overhead-Kosten werden vermieden, da nur eine Sitzung benötigt wird.[1] Web-Benachrichtigungen sind Teil des W3C-Standards und definieren eine API für Endbenutzer-Benachrichtigungen. Eine Benachrichtigung ermöglicht es, den Benutzer außerhalb des Kontexts einer Webseite über ein Ereignis, wie beispielsweise die Zustellung von E-Mails, zu benachrichtigen.[2] Als Teil dieser vom W3C definierten Standard-Push-API wurde sie von den Webbrowsern Chrome, Firefox, Edge und Safari implementiert.[3]
HTTP-Server-Push (auch bekannt als HTTP-Streaming) wiederum ist ein Mechanismus zum Senden nicht angeforderter (asynchroner) Daten von einem Webserver an einen Webbrowser. HTTP-Server-Push kann durch einen von mehreren Mechanismen erreicht werden.
Als Teil von HTML5 ermöglicht die WebSocket-API einem Webserver und einem Client die Kommunikation über eine Vollduplex-TCP-Verbindung.
Im Allgemeinen beendet der Webserver eine Verbindung nicht, nachdem Antwortdaten an einen Client gesendet wurden. Der Webserver lässt die Verbindung offen, sodass beim Eintreten eines Ereignisses (z. B. einer Änderung der internen Daten, die einem oder mehreren Clients gemeldet werden muss), dieses sofort versendet werden kann. Andernfalls müsste das Ereignis, bis die nächste Anfrage des Clients eingeht, in die Warteschlange gestellt werden. Die meisten Webserver bieten diese Funktionalität über CGI an (z. B. Non-Parsed-Header-Skripte auf Apache HTTP Server). Der zugrundeliegende Mechanismus für diesen Ansatz ist die Chunked-Transfer-Kodierung.
Ein weiterer Mechanismus hängt mit einem speziellen MIME-Type namens multipart/x-mixed-replace zusammen, der 1995 von Netscape eingeführt wurde. Webbrowser interpretieren ihn als ein Dokument, das sich ändert, sobald der Server eine neue Version an den Client schiebt.[4] Er wird auch heute noch von Firefox, Opera und Safari unterstützt, vom Internet Explorer jedoch ignoriert und von Google Chrome nur teilweise unterstützt.[5] Er kann auch auf HTML-Dokumente und für das Streaming von Bildern in Webcam-Anwendungen angewendet werden.
Der Vorschlag Web Applications 1.0 der WHATWG enthält einen Mechanismus, um Inhalte an den Client zu pushen. Am 1. September 2006 implementierte der Webbrowser Opera dieses neue, seinerzeit experimentelle System in einer Funktion namens Server-Sent Events, die nun als Teil von HTML5 standardisiert wird.[6][7]
Falls HTTP-Server-Push nicht anwendbar ist, kann als Alternative long Polling verwendet werden.
Eine Push-Benachrichtigung ist eine erzwungene Nachricht. Sie wird vom Backend-Server oder einer Anwendung an die Benutzerschnittstelle „gepusht“, z. B. (aber nicht beschränkt auf) mobile Anwendungen und Desktop-Anwendungen. Push-Benachrichtigungen wurden von Apple erstmals 2009 eingeführt.[8]
2010 veröffentlichte Google seinen eigenen Dienst, Google Cloud to Device Messaging. Inzwischen wurde er durch Google Cloud Messaging und dann Firebase Cloud Messaging ersetzt.[9]
Im November 2015 kündigte Microsoft an, dass der Windows-Benachrichtigungsdienst erweitert wird, um die Architektur der Windows-Plattform zu nutzen, sodass Push-Benachrichtigungen an Windows 10, Windows 10 Mobile, Xbox sowie an andere unterstützte Plattformen mit universellen API-Aufrufen und POST-Anfragen gesendet werden können.[10]
Push-Benachrichtigungen werden hauptsächlich in 2 Ansätze unterteilt, lokale Benachrichtigungen und entfernte Benachrichtigungen.[11]
Echtzeit-Push-Benachrichtigungen können Datenschutzprobleme aufwerfen, da sie dazu verwendet werden können, eine Verbindung zwischen virtuellen Identitäten von Social-Network-Pseudonymen an die realen Identitäten der Smartphone-Besitzer herzustellen.