# Tecnología push

La tecnología push es una forma de comunicación a través de internet en la que la petición de envío tiene origen en el servidor, por oposición a la tecnología pull, en la que la petición tiene origen en el cliente.

## Uso general

Los servicios push están basados, a menudo, en preferencias de información a medida. Es decir, un modelo publicación-suscripción. Un cliente deberá suscribirse a varios canales de información. Cuando el nuevo contenido está disponible en uno de estos canales, el servidor deberá publicar (enviar) la información al dispositivo del usuario.
Las conferencias sincronizadas y la mensajería instantánea son ejemplos típicos de los servicios tipo push. Los mensajes de chat y, en ocasiones archivos, son enviados al usuario tan pronto estos son recibidos por el sistema de mensajería. Los programas descentralizados P2P (como WASTE) y los centralizados (como IRC o Jabber) permiten hacer «push» de archivos. Es decir, el remitente inicia la transferencia de datos, en vez del destinatario.
El correo electrónico es un sistema push: el protocolo SMTP en el que está basado, es un protocolo push (ver Push correo electrónico). Sin embargo, el último paso: desde el servidor de correo electrónico, hasta el escritorio del usuario usa un protocolo pull como POP3 o IMAP. Los clientes modernos de correo electrónico hacen que este paso parezca instantáneo (hacen uso de consultas periódicas al servidor de correo, buscando nuevos mensajes). El protocolo IMAP incluye el comando IDLE, que permite al servidor comunicarle al cliente que ha llegado un nuevo correo. La BlackBerry original fue el primer ejemplo popular de tecnología push en un contexto inalámbrico.
Otro ejemplo popular de tecnología push en Internet fue PointCast Network, que ganó popularidad en los años 90. Este se encargaba de repartir y guardar datos. Ambos Netscape y Microsoft lo integraron en sus programas durante la guerra de navegadores, pero fue reemplazado más tarde, en los 2000 por RSS (una tecnología pull).
Otros usos de aplicaciones web que hacen uso de la tecnología push, incluye a la distribución de datos de mercados (inventarios), sistemas de mensajería/chat en línea, subastas, juegos y casinos en línea, resultado de deportes, monitorización de consolas y de redes.

## Tecnologías
### Push desde servidor HTTP

Un push desde servidor HTTP es un mecanismo de envío de datos desde un servidor web a un navegador web. Un push HTTP puede ser enviado a través de muchos mecanismos.
Generalmente el servidor web no termina la respuesta después que los datos han sido enviados al cliente. El servidor web deja el canal abierto para que si un evento ocurre, este pueda ser enviado inmediatamente a uno o a muchos clientes. De otra forma, los datos deberían ser puestos en una cola hasta que se reciba la próxima petición del cliente. Muchos servidores web ofrecen esta funcionalidad a través de CGI (por ejemplo scripts NPH en Apache).
Otro mecanismo está relacionado con un tipo especial MIME llamado multipart/x-mixed-replace, que fue introducido por Netscape en 1995. Los navegadores web deberían interpretarlo como un cambio en el documento en el momento que el servidor publica una nueva versión al cliente. Hoy continúa siendo soportado por Firefox, Opera y Safari, pero tradicionalmente es ignorado por Microsoft. Puede ser aplicado a documentos HTML, pero para difusión de imágenes en aplicaciones con cámara web.
El WHATWG tiene elaborado un borrador de una especificación Web Applications 1.0 que publica contenido al cliente usando tecnología push. El 1 de septiembre del 2006, el navegador Opera implementó esta tecnología experimental en una característica llamada "Server-Sent Events."

### Pushlet de Java

Un pushlet es una técnica desarrollada originalmente para aplicaciones web sobre Java, aunque las mismas técnicas pueden ser empleadas, en otros frameworks web. En esta técnica, el servidor toma ventaja de las conexiones persistentes HTTP y deja la respuesta al cliente "abierta" (es decir, no la termina), dejando al browser en un continuo estado de "carga" en el momento que la página inicial debería haber sido completada. El servidor, luego, utiliza periódicamente rutinas de javascript para actualizar el contenido de la página, consiguiendo de esta manera, la capacidad de push. Usando esta técnica, el cliente no necesita applets Java u otros plug-ins para mantener una conexión abierta con el servidor. Los clientes pueden ser notificados automáticamente de nuevos eventos, puestos por el server. Una importante desventaja de este método, sin embargo, es la pérdida del control que tiene el servidor sobre los tiempos de expiración. Un refresco de la página siempre es necesario si la página expira o el browser es cerrado.

### Long polling o sondeo largo

El sondeo largo es una variación de la técnica tradicional de sondeo y permite emular información colocada desde un servidor a un cliente en forma similar al sondeo normal. Sin embargo, si el servidor no tiene información disponible para el cliente, en vez de enviar una respuesta vacía, el servidor guarda la petición y espera a que alguna información esté disponible. Una vez la información está disponible (o después de un tiempo establecido), se envía una respuesta completa al cliente. Entonces cuando el cliente normalmente realizará un re-pedido de información al servidor, para que este siempre tenga un pedido en espera, que puede ser usado para responder a un evento.
El long polling no es en sí mismo una tecnología push, pero puede ser usada bajo circunstancias donde un push verdadero no es posible.

### Otras tecnologías

El término Comet ha sido usado para describir las tecnologías push aplicadas a las aplicaciones web con AJAX. Se trata de un término global para una combinación de tecnologías web como un push HTTP y sondeo largo.

## Notificación push

Las notificaciones push son mensajes que se envían de forma directa desde el servidor a dispositivos móviles, como teléfonos inteligentes o tabletas, y aplicaciones de escritorio, en todo tipo de sistemas operativos, desde Android hasta Windows, pasando por Linux o iOS.
Las notificaciones ayudan a los desarrolladores independientes y dueños de aplicaciones a mantener informados a sus usuarios. Mediante la implementación de las mismas se puede interactuar con las personas que descargaron una aplicación y enviarles mensajes de forma directa a sus dispositivos.
Desde abril de 2023, la actualización de iOS 16.4 para iPhone y iPad permite por primera vez las notificaciones push web en estos dispositivos a través del navegador Safari. Los usuarios pueden optar por recibir notificaciones desde el navegador web. Es importante destacar que solo los sitios web guardados en la pantalla de inicio tendrán permiso para enviar notificaciones push.

## Push cifradas

Existen notificaciones push cifradas para datos sensibles y transacciones económicas. Estas notificaciones cifradas confirman las compras online de los clientes en cumplimiento con la directiva PSD2 de Europa, apoyando específicamente el proceso de autenticación de dos factores requerido (Autenticación Reforzada de Cliente o SCA).
Los clientes reciben una notificación segura e inmediata que contiene un código de contraseña de un solo uso (OTP), verificando que poseen un dispositivo confiable autorizado para recibir códigos OTP.
Posteriormente, la confirmación de identidad puede realizarse mediante uno de los siguientes métodos:
* Basado en conocimiento: algo que el usuario sabe (contraseña).
* Basado en biometría: algo que el usuario es (huella digital).
* Reconocimiento facial: algo que el usuario es (rostro).