# Tecnologia de tramesa automàtica

Tecnologia de tramesa automàtica o tecnologia push descriu un estil de comunicacions a Internet on la petició d'una transacció s'origina en el servidor. Al contrari a la tecnologia pull, on la petició és originada en el client-servidor.

## Ús general

Els serveis Push sovint es basen en preferències d'informació a mida. És a dir, un model publicador/subscriptor. Un client s'haurà de subscriure a diversos canals d'informació. Quan el nou contingut està disponible en un d'aquests canals, el servidor haurà d'enviar la informació a l'usuari.
Les conferències sincronitzades i la missatgeria instantània són exemples típics dels serveis tipus 'push'. Els missatges de xat i, a vegades arxius, són enviats a l'usuari tan aviat aquests són rebuts pel sistema de missatgeria. Els programes descentralitzats P2P (com WASTE) i els centralitzats (com IRC o Jabber) permeten fer 'push' d'arxius. És a dir, el remitent inicia la transferència de dades, en comptes del destinatari.
El correu electrònic és un sistema push: el protocol SMTP en el que està basat, és un protocol push. Tanmateix, l'últim pas: des del servidor de correu, fins a l'escriptori de l'usuari usa un protocol pull com POP3 o IMAP. Els clients moderns d'email fan que aquest pas sembli instantani (fan ús de consultes periòdiques al servidor de correu, buscant nous missatges). El protocol IMAP inclou l'ordre IMAP IDLE, que permet al servidor comunicar-li al client quan ha arribat un nou correu. El BlackBerry original va ser el primer exemple popular de tecnologia push en un context sense fils.
Altres usos d'aplicacions web que fan ús de la tecnologia push, inclou la distribució de dades de mercats (inventaris), sistemes de missatgeria/xat online (xat), subhastes, jocs i casinos online, resultat d'esports, monitoratge de consoles i de xarxes.

## Tecnologies
### HTTP server push

HTTP server push (conegut com a HTTP streaming) és un mecanisme de tramesa de dades des d'un servidor web cap a un navegador web. HTTP server push pot ser realitzat a través de molts mecanismes.
Generalment el servidor web no acaba la resposta després que les dades han estat enviades al client. El servidor web deixa la resposta oberta per si té lloc cap esdeveniment, aquest pugui ser enviat immediatament a un o a molts clients. D'altra manera, les dades haurien de ser posades en una cua fins que es rebi la pròxima petició del client. Molts servidors web ofereixen aquesta funcionalitat a través de CGI (per exemple NPH scripts a Apache). Un altre mecanisme està relacionat amb un tipus especial MIME anomenat multipart/x-mixed-replace, que va ser introduït per Netscape el 1995. Els Web browsers ho haurien d'interpretar com un canvi en el document quan el servidor publica una nova versió al client. Avui continua sent suportat per Firefox, Opera i Safari, però tradicionalment és ignorat. Microsoft. Pot ser aplicat a documents HTML, però per a difusió d'imatges en aplicacions amb webcam.
El WHATWG té elaborat un esborrany d'una especificació Web Applications 1.0 que publica contingut el client usant tecnologia push. L'1 de setembre del 2006, el navegador Opera va implementar aquesta tecnologia experimental en una característica anomenada "Server-Sent Events."

### Java pushlet

Un pushlet és una tècnica desenvolupada originalment per a aplicacions web sobre Java, encara que les mateixes tècniques poden ser emprades, en altres frameworks web. En aquesta tècnica, el servidor pren avantatge de les connexions persistents HTTP i deixa la resposta al client "oberta" (és a dir, no l'acaba), deixant al browser en un continu estat de "càrrega" en el moment que la pàgina inicial hauria d'haver estat completada. El servidor, després, utilitza periòdicament rutines de javascript per actualitzar el contingut de la pàgina, aconseguint d'aquesta manera, la capacitat de push. Fent servir aquesta tècnica, el client no necessita applets Java o altres plug-ins per mantenir una connexió oberta amb el servidor. Els clients poden ser notificats automàticament de nous esdeveniments pel servidor. Una important desavantatge d'aquest mètode, tanmateix, és la pèrdua del control que té el servidor sobre els temps d'expiració. Un refresc de la pàgina sempre és necessari si la pàgina expira o el browser és tancat.

### Long polling

Long polling és una variació de la tècnica tradicional de polling i permet emular informació col·locada des d'un servidor a un client en forma similar al polling normal. Tanmateix, si el servidor no té informació disponible per al client, en comptes d'enviar una resposta buida, el servidor guarda la petició i espera a què alguna informació estigui disponible. Una vegada la informació està disponible (o després d'un temps establert), s'envia una resposta completa al client. Llavors el client normalment realitzarà una recomanda d'informació al servidor, perquè aquest sempre tingui una comanda en espera, que pot ser usat per respondre a un esdeveniment. Long polling no és en si mateix una tecnologia push, però pot ser utilitzada sota circumstàncies on un push verdader no és possible.

### Altres tecnologies

El terme Comet ha estat usat per descriure les tecnologies push aplicades a les aplicacions web amb AJAX. Es tracta d'un terme global per a una combinació de tecnologies web com HTTP server push i long polling.

## Referències

* ↑ «Client pull/Server push implementations». Arxivat de l'original el 2010-03-25. [Consulta: 18 setembre 2009].
* ↑ CGI Programming on the World Wide Web El llibre d'O'Reilly explica com fer servir el servidor push a Netscape
* ↑ Server-Push Documents (HTML & XHTML: The Definitive Guide) O'Reilly book explaining server-push
* ↑ Web Applications 1.0
* ↑ «Event Streaming to Web Browsers». Arxivat de l'original el 2006-10-16. [Consulta: 16 octubre 2006].
* ↑ «Opera takes the lead with AJAX support among browsers: More efficient streaming». Arxivat de l'original el 2007-03-18. [Consulta: 18 setembre 2009].
* ↑ «Pushlets introduction». Arxivat de l'original el 2009-08-05. [Consulta: 18 setembre 2009].
* ↑ «JavaWorld article about pushlets». Arxivat de l'original el 2013-10-21. [Consulta: 18 setembre 2009].

## Enllaços externs

* W3C Push Workshop. A 1997 workshop that discussed push technology and some early examples thereof.
* HTTP Streaming with Ajax Arxivat 2009-04-15 a Wayback Machine. A description of HTTP Streaming from the Ajax Patterns website
* HTML 5 Draft with Server-sent events A mechanism for allowing servers to dispatch events, 2008 draft
* HTTP Server Push at UDAParts A commercial grade Comet implementation Arxivat 2009-08-05 a Wayback Machine.