Jump to content

Push technology

From Wikipedia, the free encyclopedia

Push technology,also known asserver Push,refers to a communication method, where the communication is initiated by aserverrather than a client. This approach is different from the "pull"method where the communication is initiated by a client.[1]

In push technology, clients can express their preferences for certain types of information or data, typically through a process known as thepublish–subscribemodel. In this model, a client "subscribes" to specific information channels hosted by a server. When new content becomes available on these channels, the server automatically sends, or "pushes," this information to the subscribed client.

Under certain conditions, such as restrictive security policies that block incomingHTTPrequests, push technology is sometimes simulated using a technique calledpolling.In these cases, the client periodically checks with the server to see if new information is available, rather than receiving automatic updates.

General use[edit]

Synchronous conferencingandinstant messagingare examples of push services. Chat messages and sometimesfilesare pushed to the user as soon as they are received by the messaging service. Both decentralizedpeer-to-peerprograms (such asWASTE) and centralized programs (such asIRCorXMPP) allow pushing files, which means the sender initiates the data transfer rather than the recipient.

Emailmay also be a push system:SMTPis a push protocol (seePush e-mail). However, the last step—from mail server to desktop computer—typically uses a pull protocol likePOP3orIMAP.Modern e-mail clients make this step seem instantaneous by repeatedlypollingthe mail server, frequently checking it for new mail. The IMAP protocol includes theIDLEcommand, which allows the server to tell the client when new messages arrive. The originalBlackBerrywas the first popular example of push-email in a wireless context.[citation needed]

Another example is thePointCast Network,which was widely covered in the 1990s. It delivered news and stock market data as a screensaver. BothNetscapeandMicrosoftintegrated push technology through theChannel Definition Format(CDF) into their software at the height of thebrowser wars,but it was never very popular. CDF faded away and was removed from the browsers of the time, replaced in the 2000s withRSS(a pull system.)

Other uses of push-enabledweb applicationsinclude software updates distribution ( "push updates" ), market data distribution (stock tickers), online chat/messaging systems (webchat), auctions, online betting and gaming, sport results, monitoring consoles, andsensor networkmonitoring.

Examples[edit]

Web push[edit]

The Web push proposal of theInternet Engineering Task Forceis a simple protocol usingHTTP version 2to deliver real-time events, such as incoming calls or messages, which can be delivered (or "pushed" ) in a timely fashion. The protocol consolidates allreal-timeevents into a single session which ensures more efficient use of network and radio resources. A single service consolidates all events, distributing those events to applications as they arrive. This requires just one session, avoiding duplicated overhead costs.[2]

Web Notifications are part of theW3Cstandard and define anAPIfor end-user notifications. A notification allows alerting the user of an event, such as the delivery of an email, outside the context of a web page.[3]As part of this standard, Push API is fully implemented inChrome,Firefox,andEdge,and partially implemented inSafarias of February 2023.[4][5]

HTTP server push[edit]

HTTP server push (also known as HTTP streaming) is a mechanism for sending unsolicited (asynchronous) data from aweb serverto aweb browser.HTTP server push can be achieved through any of several mechanisms.

As a part ofHTML5theWeb SocketAPI allows a web server and client to communicate over afull-duplexTCP connection.

Generally, the web server does not terminate a connection after response data has been served to a client. The web server leaves the connection open so that if an event occurs (for example, a change in internal data which needs to be reported to one or multiple clients), it can be sent out immediately; otherwise, the event would have to be queued until the client's next request is received. Most web servers offer this functionality viaCGI(e.g., Non-Parsed Headers scripts onApache HTTP Server). The underlying mechanism for this approach ischunked transfer encoding.

Another mechanism is related to a specialMIMEtype calledmultipart/x-mixed-replace,which was introduced byNetscapein 1995. Web browsers interpret this as a document that changes whenever the server pushes a new version to the client.[6]It is still supported byFirefox,Opera,andSafaritoday, but it is ignored byInternet Explorer[7]and is only partially supported byChrome.[8]It can be applied toHTMLdocuments, and also for streaming images inwebcamapplications.

TheWHATWGWeb Applications 1.0 proposal[9]includes a mechanism to push content to the client. On September 1, 2006, the Opera web browser implemented this new experimental system in a feature called "Server-Sent Events".[10][11]It is now part of theHTML5standard.[12]

Pushlet[edit]

In this technique, the server takes advantage ofpersistent HTTP connections,leaving the response perpetually "open" (i.e., the server never terminates the response), effectively fooling the browser to remain in "loading" mode after the initial page load could be considered complete. The server then periodically sends snippets ofJavaScriptto update the content of the page, thereby achieving push capability. By using this technique, the client doesn't needJava appletsor other plug-ins in order to keep an open connection to the server; the client is automatically notified about new events, pushed by the server.[13][14]One serious drawback to this method, however, is the lack of control the server has over the browser timing out; a page refresh is always necessary if a timeout occurs on the browser end.

Long polling[edit]

Long polling is itself not a true push; long polling is a variation of the traditional polling technique, but it allows emulating a push mechanism under circumstances where a real push is not possible, such as sites with security policies that require rejection of incoming HTTP requests.

With long polling, the client requests to get more information from the server exactly as in normal polling, but with the expectation that the server may not respond immediately. If the server has no new information for the client when the poll is received, then instead of sending an empty response, the server holds the request open and waits for response information to become available. Once it does have new information, the server immediately sends an HTTP response to the client, completing the open HTTP request. Upon receipt of the server response, the client often immediately issues another server request. In this way the usual response latency (the time between when the information first becomes available and the next client request) otherwise associated with polling clients is eliminated.[15]

For example,BOSHis a popular, long-lived HTTP technique used as a long-polling alternative to a continuous TCP connection when such a connection is difficult or impossible to employ directly (e.g., in a web browser);[16]it is also an underlying technology in theXMPP,which Apple uses for its iCloud push support.

Flash XML Socket relays[edit]

This technique, used bychatapplications, makes use of theXML Socketobject in a single-pixelAdobe Flashmovie. Under the control ofJavaScript,the client establishes aTCP connectionto aunidirectionalrelay on the server. The relay server does not read anything from thissocket;instead, it immediately sends the client aunique identifier.Next, the client makes anHTTP requestto the web server, including this identifier with it. The web application can then push messages addressed to the client to a local interface of the relay server, which relays them over the Flash socket. The advantage of this approach is that it appreciates the natural read-write asymmetry that is typical of many web applications, including chat, and as a consequence it offers high efficiency. Since it does not accept data on outgoing sockets, the relay server does not need to poll outgoing TCP connectionsat all,making it possible to hold open tens of thousands of concurrent connections. In this model, the limit to scale is the TCP stack of the underlying server operating system.

Reliable Group Data Delivery (RGDD)[edit]

In services such asCloud Computing,to increase reliability and availability of data, it is usually pushed (replicated) to several machines. For example, the Hadoop Distributed File System (HDFS) makes 2 extra copies of any object stored. RGDD focuses on efficiently casting an object from one location to many while saving bandwidth by sending minimal number of copies (only one in the best case) of the object over any link across the network. For example, Datacast[17]is a scheme for delivery to many nodes inside data centers that relies on regular and structured topologies and DCCast[18]is a similar approach for delivery across data centers.

Push notification[edit]

A push notification is a message that is "pushed" from a back-end server or application to a user interface, e.g. mobile applications[19]or desktop applications.Appleintroduced push notifications foriPhonein 2009,[20]and in 2010Googlereleased "Google Cloud to Device Messaging" (superseded byGoogle Cloud Messagingand then byFirebase Cloud Messaging).[21] In November 2015,Microsoftannounced that theWindows Notification Servicewould be expanded to make use of the Universal Windows Platform architecture, allowing for push data to be sent toWindows 10,Windows 10 Mobile,Xbox,and other supported platforms using universal API calls and POST requests.[22]

Push notifications are mainly divided into two approaches, local notifications and remote notifications.[23]For local notifications, the application schedules the notification with the local device's OS. For remote notifications, the application sets a timer in the application itself, provided it is able to continuously run in the background. When the event's scheduled time is reached, or the event's programmed condition is met, the message is displayed in the application's user interface.

Remote notifications are handled by a remote server. Under this scenario, the client application needs to be registered on the server with a unique key (e.g., aUUID). The server then fires the message against the unique key to deliver it to the client via an agreed client/server protocol such asHTTPorXMPP,and the client displays the message received. When the push notification arrives, it can transmit short notifications and messages, set badges on application icons, blink or continuously light up thenotification LED,or play alert sounds to attract user's attention.[24][permanent dead link]Push notifications are usually used by applications to bring information to users' attention. The content of the messages can be classified in the following example categories:

  • Chat messages from a messaging application such asFacebook Messengersent by other users.[25]
  • Vendor special offers: A vendor may want to advertise their offers to customers.
  • Event reminders: Some applications may allow the customer to create a reminder or alert for a specific time.
  • Subscribed topic changes: Users may want to get updates regarding the weather in their location, or monitor a web page to track changes, for instance.

Real-time push notifications may raise privacy issues since they can be used to bind virtual identities of social network pseudonyms to the real identities of the smartphone owners.[26]The use of unnecessary push notifications for promotional purposes has been criticized as an example ofattention theft.[27]

See also[edit]

References[edit]

  1. ^"Push Technology".Techopedia.2012-11-18.Retrieved2023-07-23.
  2. ^M. Thomson, E. Damaggio and B. Raymor (October 22, 2016)."Generic Event Delivery Using HTTP Push".Internet Draft.Internet Engineering Task Force.RetrievedOctober 28,2016.
  3. ^"Notifications API Standard".notifications.spec.whatwg.org.RetrievedApril 30,2024.
  4. ^"Push API".RetrievedApril 30,2024.
  5. ^"Push API - Web APIs | MDN".developer.mozilla.org.2023-02-22.Retrieved2023-05-16.
  6. ^CGI Programming on the World Wide WebO'Reilly book explaining how to use Netscape server-push
  7. ^Server-Push Documents (HTML & XHTML: The Definitive Guide)Archived2008-04-17 at theWayback MachineO'Reilly book explaining server-push
  8. ^Remove support for multipart/x-mixed-replace main resources
  9. ^"Web Applications 1.0 specification".
  10. ^"Event Streaming to Web Browsers".2006-09-01.Retrieved2007-03-23.
  11. ^"Opera takes the lead with AJAX support among browsers: More efficient streaming".2006-09-01. Archived fromthe originalon 2007-03-18.Retrieved2007-03-23.
  12. ^"HTML Standard – Server-sent events".html.spec.whatwg.org.31 March 2022.Retrieved1 April2022.
  13. ^"Pushlets introduction".Archived fromthe originalon 2009-08-05.Retrieved2008-06-05.
  14. ^Van Den Broecke, Just (1 March 2000)."Pushlets: Send events from servlets to DHTML client browsers".JavaWorld.Retrieved2020-07-13.
  15. ^Saint-Andre, Peter; Loreto, Salvatore; Salsano, Stefano; Wilkins, Greg (April 2011)."RFC6202 - Known Issues and Best Practices for the Use of Long Polling and Streaming in Bidirectional HTTP".tools.ietf.org.doi:10.17487/RFC6202.Retrieved2016-05-14.
  16. ^"XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH)".Retrieved2012-06-26.
  17. ^C. Guo; et al. (November 1, 2012)."Datacast: A Scalable and Efficient Reliable Group Data Delivery Service For Data Centers".Microsoft Research.ACM.RetrievedJun 6,2017.
  18. ^M. Noormohammadpour; et al. (July 10, 2017)."DCCast: Efficient Point to Multipoint Transfers Across Datacenters".USENIX.RetrievedJun 6,2017.
  19. ^Wohllebe, Atilla. (2020)."Consumer Acceptance of App Push Notifications: Systematic Review on the Influence of Frequency".International Journal of Interactive Mobile Technologies.14(13): 36–47.doi:10.3991/ijim.v14i13.14563.
  20. ^"iPhone push notification service for devs announced".Engadget.Retrieved2016-10-18.
  21. ^"Google Cloud Messaging for Android (GCM) Unveiled, to Replace C2DM Framework".InfoQ.Retrieved2016-10-18.
  22. ^mijacobs."Windows Push Notification Services (WNS) overview".docs.microsoft.Retrieved2017-10-20.
  23. ^"Local and Remote Notifications in Depth".developer.apple.Retrieved2016-10-18.
  24. ^"Android and iOS Push Notifications – Blog – JatApp".jatapp.Retrieved2017-10-20.
  25. ^"How do I adjust my mobile push notifications from Facebook? | Facebook Help Center | Facebook".facebook.Retrieved2016-10-18.
  26. ^Loreti, Pierpaolo; Bracciale, Lorenzo; Caponi, Alberto (2018)."Push Attack: Binding Virtual and Real Identities Using Mobile Push Notifications".Future Internet.10(2): 13.doi:10.3390/fi10020013.
  27. ^McFedries, Paul (22 May 2014)."Stop, Attention Thief!".IEEE Spectrum.Institute of Electrical and Electronics Engineers.Retrieved9 August2021.

External links[edit]