Push technology - Wikipedia
Jump to content
From Wikipedia, the free encyclopedia
Method of network communication where requests are sent by the publisher
Push technology,
also known as
server push,
is a communication method where the communication is initiated by a
server
rather than a
client
. This approach is different from the "
pull
" method where the communication is initiated by a client.
In push technology, clients can express their preferences for certain types of information or data, typically through a process known as the
publish–subscribe
model. 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 incoming
HTTP
requests, push technology is sometimes simulated using a technique called
polling.
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 conferencing
and
instant messaging
are examples of push services. Chat messages and sometimes
files
are pushed to the user as soon as they are received by the messaging service. Both decentralized
peer-to-peer
programs (such as
WASTE
) and centralized programs (such as
IRC
or
XMPP
) allow pushing files, which means the sender initiates the data transfer rather than the recipient.
Email
may also be a push system:
SMTP
is a push protocol (see
Push e-mail
). However, the last step—from mail server to desktop computer—typically uses a pull protocol like
POP3
or
IMAP
. Modern e-mail clients make this step seem instantaneous by repeatedly
polling
the mail server, frequently checking it for new mail. The IMAP protocol includes the
IDLE
command, which allows the server to tell the client when new messages arrive. The original
BlackBerry
was the first popular example of push-email in a wireless context.
citation needed
Another example is the
PointCast Network
, which was widely covered in the 1990s. It delivered news and stock market data as a screensaver. Both
Netscape
and
Microsoft
integrated push technology through the
Channel Definition Format
(CDF) into their software at the height of the
browser wars
, but it was never very popular. CDF faded away and was removed from the browsers of the time, replaced in the 2000s with
RSS
(a pull system.)
Other uses of push-enabled
web applications
include software updates distribution ("push updates"), market data distribution (stock tickers), online chat/messaging systems (
webchat
), auctions, online betting and gaming, sport results, monitoring consoles, and
sensor network
monitoring.
Examples
edit
Web push
edit
The Web push proposal of the
Internet Engineering Task Force
is a simple protocol using
HTTP version 2
to deliver real-time events, such as incoming calls or messages, which can be delivered (or "pushed") in a timely fashion. The protocol consolidates all
real-time
events 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.
Web Notifications are part of the
W3C
standard and define an
API
for 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.
As part of this standard, Push API is fully implemented in
Chrome
Firefox
, and
Edge
, and partially implemented in
Safari
as of February 2023
[update]
HTTP server push
edit
HTTP server push (also known as HTTP streaming) is a mechanism for sending unsolicited (asynchronous) data from a
web server
to a
web browser
. HTTP server push can be achieved through any of several mechanisms.
As a part of
HTML5
the
Web Socket
API allows a web server and client to communicate over a
full-duplex
TCP 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 via
CGI
(e.g., Non-Parsed Headers scripts on
Apache HTTP Server
).
The underlying mechanism for this approach is
chunked transfer encoding
Another mechanism is related to a special
MIME
type called
multipart/x-mixed-replace
, which was introduced by
Netscape
in 1995. Web browsers interpret this as a document that changes whenever the server pushes a new version to the client.
It is still supported by
Firefox
Opera
, and
Safari
today, but it is ignored by
Internet Explorer
and is only partially supported by
Chrome
10
It can be applied to
HTML
documents, and also for streaming images in
webcam
applications.
The
WHATWG
Web Applications 1.0 proposal
11
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
".
12
13
It is now part of the
HTML5
standard.
14
Pushlet
edit
In this technique, the server takes advantage of
persistent 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 of
JavaScript
to update the content of the page, thereby achieving push capability. By using this technique, the client doesn't need
Java applets
or 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.
15
16
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.
17
18
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.
19
For example,
BOSH
is 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);
20
it is also an underlying technology in the
XMPP
, which Apple uses for its iCloud push support.
citation needed
Flash XML Socket relays
edit
This technique, used by
chat
applications, makes use of the
XML Socket
object in a single-pixel
Adobe Flash
movie. Under the control of
JavaScript
, the client establishes a
TCP connection
to a
unidirectional
relay on the server. The relay server does not read anything from this
socket
; instead, it immediately sends the client a
unique identifier
. Next, the client makes an
HTTP request
to 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 connections
at 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 as
cloud 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
21
is a scheme for delivery to many nodes inside data centers that relies on regular and structured topologies and DCCast
22
is a similar approach for delivery across data centers.
Push notification
edit
See also:
Mobile marketing § Push notifications
A push notification is a message that is "pushed" from a back-end server or application to a user interface, e.g. mobile applications
23
or desktop applications.
Apple
introduced push notifications for
iPhone
in 2009,
24
and in 2010
Google
released "Google Cloud to Device Messaging" (superseded by
Google Cloud Messaging
and then by
Firebase Cloud Messaging
).
25
In November 2015,
Microsoft
announced that the
Windows Notification Service
would be expanded to make use of the Universal Windows Platform architecture, allowing for push data to be sent to
Windows 10
Windows 10 Mobile
Xbox
, and other supported platforms using universal API calls and POST requests.
26
Push notifications are mainly divided into two approaches, local notifications and remote notifications.
27
For local notifications, the application schedules the notification with the local device's OS. 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., a
UUID
or Apple
Device Token
). The server then transmits the message against the unique key to deliver it to the client via an agreed client/server protocol such as
HTTP
or
XMPP
. When the push notification arrives at the client, it can cause the display of short notifications or messages, set badges on application icons, blink or continuously light up the
notification LED
, or play alert sounds to attract user's attention.
28
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 as
Facebook Messenger
sent by other users.
29
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.
30
The use of unnecessary push notifications for promotional purposes has been criticized as an example of
attention theft
31
See also
edit
BlazeDS
BOSH (protocol)
Channel Definition Format
Client–server model
Comet (programming)
File transfer
GraniteDS
HTTP/2
Lightstreamer
Notification LED
Pull technology
Push Access Protocol
Push email
SQL Server Notification Services
Streaming media
WebSocket
WebSub
References
edit
"Push Technology"
Techopedia
. 2012-11-18
. Retrieved
2023-07-23
M. Thomson, E. Damaggio and B. Raymor (October 22, 2016).
"Generic Event Delivery Using HTTP Push"
Internet Draft
. Internet Engineering Task Force
. Retrieved
October 28,
2016
"Notifications API Standard"
notifications.spec.whatwg.org
. Retrieved
April 30,
2024
"Push API"
. Retrieved
April 30,
2024
"Push API - Web APIs | MDN"
developer.mozilla.org
. 2023-02-22
. Retrieved
2023-05-16
"HTTP Push Mechanism"
DEV Community
. 2026-01-31
. Retrieved
2026-04-14
"Server Sent Events"
www.enjoyalgorithms.com
. Retrieved
2026-04-14
CGI Programming on the World Wide Web
O'Reilly book explaining how to use Netscape server-push
Server-Push Documents (HTML & XHTML: The Definitive Guide)
Archived
2008-04-17 at the
Wayback Machine
O'Reilly book explaining server-push
Remove support for multipart/x-mixed-replace main resources
"Web Applications 1.0 specification"
"Event Streaming to Web Browsers"
. 2006-09-01
. Retrieved
2007-03-23
"Opera takes the lead with AJAX support among browsers: More efficient streaming"
. 2006-09-01. Archived from
the original
on 2007-03-18
. Retrieved
2007-03-23
"HTML Standard – Server-sent events"
html.spec.whatwg.org
. 31 March 2022
. Retrieved
1 April
2022
"Pushlets introduction"
. Archived from
the original
on 2009-08-05
. Retrieved
2008-06-05
Van Den Broecke, Just (1 March 2000).
"Pushlets: Send events from servlets to DHTML client browsers"
JavaWorld
. Retrieved
2020-07-13
"What is Long Polling and How Does it Work?"
PubNub
. Retrieved
2026-04-14
"Long Polling vs WebSockets — How to Achieve Real-Time Communication day 55 of system design"
DEV Community
. 2025-10-13
. Retrieved
2026-04-14
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
. Retrieved
2016-05-14
"XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH)"
. Retrieved
2012-06-26
C. Guo; et al. (November 1, 2012).
"Datacast: A Scalable and Efficient Reliable Group Data Delivery Service For Data Centers"
Microsoft Research
. ACM
. Retrieved
Jun 6,
2017
M. Noormohammadpour; et al. (July 10, 2017).
"DCCast: Efficient Point to Multipoint Transfers Across Datacenters"
. USENIX
. Retrieved
Jun 6,
2017
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
"iPhone push notification service for devs announced"
Engadget
. Retrieved
2016-10-18
"Google Cloud Messaging for Android (GCM) Unveiled, to Replace C2DM Framework"
InfoQ
. Retrieved
2016-10-18
mijacobs.
"Windows Push Notification Services (WNS) overview"
docs.microsoft.com
. Retrieved
2017-10-20
"Local and Remote Notifications in Depth"
developer.apple.com
. Retrieved
2016-10-18
"Android and iOS Push Notifications – Blog – JatApp"
jatapp.com
. Archived from
the original
on October 20, 2017
. Retrieved
2017-10-20
"How do I adjust my mobile push notifications from Facebook? | Facebook Help Center | Facebook"
www.facebook.com
. Retrieved
2016-10-18
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
McFedries, Paul (22 May 2014).
"Stop, Attention Thief!"
IEEE Spectrum
Institute of Electrical and Electronics Engineers
. Retrieved
9 August
2021
External links
edit
W3C Push Workshop. A 1997 workshop that discussed push technology and some early examples thereof
HTTP Streaming with Ajax
A description of HTTP Streaming from the Ajax Patterns website
The Web Socket API
candidate recommendation
HTML5 Server-Sent Events
draft specification
Web interfaces
Server-side
Protocols
HTTP
v2
v3
Encryption
WebDAV
CGI
SCGI
FCGI
AJP
WSRP
WebSocket
Server APIs
C NSAPI
C ASAPI
C ISAPI
COM ASP
Jakarta Servlet
container
CLI OWIN
ASP.NET Handler
Python WSGI
Python ASGI
Ruby Rack
JavaScript JSGI
Perl PSGI
Portlet
container
Apache modules
mod_include
mod_jk
mod_lisp
mod_mono
mod_parrot
mod_perl
mod_php
mod_proxy
mod_python
mod_wsgi
mod_ruby
Phusion Passenger
Topics
Web service
vs.
Web resource
WOA
vs.
ROA
Open API
Webhook
Application server
comparison
Scripting
Client-side
Browser APIs
C NPAPI
LiveConnect
XPConnect
C NPRuntime
C PPAPI
NaCl
ActiveX
BHO
XBAP
Web APIs
WHATWG
Audio
Canvas
DOM
SSE
Video
WebSockets
Web messaging
Web storage
Web worker
XMLHttpRequest
W3C
DOM events
EME
File
Geolocation
IndexedDB
MSE
SVG
WebAssembly
WebAuthn
WebGPU
WebRTC
WebXR
Khronos
WebCL
WebGL
Others
Gears
Web SQL Database
(formerly W3C)
WebUSB
Topics
Ajax
and
Remote scripting
vs.
DHTML
Browser extension
Cross-site scripting
and
CORS
Hydration
Mashup
Persistent data
Web IDL
Scripting
Related topics
Frontend and backend
Microservices
REST
GraphQL
Push technology
Solution stack
Web page
Static
Dynamic
Web standards
Web API security
Web application
Rich
Single-page
Progressive
Web framework
Web syndication
History
Blogging
Podcasting
Vlogging
Web syndication technology
Types
Art
Bloggernacle
Classical music
Corporate
Dream diary
Edublog
Electronic journal
Fake
Family
Fashion
Food
Health
Law
Lifelog
MP3
News
Photoblog
Police
Political
Project
Reverse
Travel
Warblog
Technology
General
BitTorrent
Feed URI scheme
Features
Linkback
Permalink
Ping
Pingback
Reblogging
Refback
Rollback
Trackback
Mechanism
Thread
Geotagging
RSS enclosure
Synchronization
Memetics
Atom feed
Data feed
Photofeed
Product feed
RDF feed
Web feed
RSS
GeoRSS
MRSS
RSS TV
Social
Inter-process communication
Mashup
Referencing
RSS editor
RSS tracking
Streaming media
Standard
OPML
RSS Advisory Board
Usenet
World Wide Web
XBEL
XOXO
Form
Audio podcast
Enhanced podcast
Mobilecast
Narrowcasting
Peercasting
Screencast
Slidecasting
Videocast
Webcomic
Webtoon
Web series
Anonymous blogging
Collaborative blog
Columnist
Instant messaging
Liveblogging
Microblog
Mobile blogging
Spam blog
Video blogging
Motovlogging
Media
Alternative media
Carnivals
Fiction
Journalism
Citizen
Database
Online diary
Search engines
Sideblog
Software
Web directory
Micromedia
Aggregation
News
Poll
Review
Video
Atom
AtomPub
Broadcatching
Hashtag
NewsML
G2
Social communication
Social software
Web Slice
Related
Blogosphere
Escribitionist
Glossary of blogging
Pay per click
Posting style
Slashdot effect
Spam in blogs
Uses of podcasting
Authority control databases
International
GND
National
United States
France
BnF data
Israel
Other
Yale LUX
Retrieved from "
Categories
Push technology
Ajax (programming)
Internet terminology
Mobile technology
Web development
Hidden categories:
Webarchive template wayback links
Articles with short description
Short description is different from Wikidata
All articles with unsourced statements
Articles with unsourced statements from September 2023
Articles containing potentially dated statements from February 2023
All articles containing potentially dated statements
Articles with unsourced statements from April 2026
Push technology
Add topic