Enviar una solicitud en tiempo real

Buenas noches.Hace tiempo que no me paso.

Quería preguntarles si esto es posible, y, si es así, quisiera saber cómo se hace.

Ya llevo tiempo con tecnologías AJAX y demás, pero tengo algunas dudillas..

Supongamos que yo quiero hacer un "chat". Pero que sólo sea con JavaScript(+DHTML) y PHP y que no haya que recargar la página para ver nuevos mensajes, ya que eso sería un shoutout con un uso distinto.

Mi pregunta es si se pueden RECIBIR paquetes de información SIN RECARGAR LA PÁGINA y sin hacer que con javascript SE TENGA QUE DESCARGAR INFORMACIÓN.

Pongamos, por ejemplo, esto:

Mariano le manda un mensaje por un chat hecho en javascript y php a su amigo. JavaScript mediante XMLHTTPREQUEST envia el formulario hacia una pagina en php que carga la información en una base de datos o en un archivo.
El amigo de mariano tiene que esperar hasta que JAVASCRIPT descargue la información, supongamos que javascript chequea si hay "updates" cada 5 minutos y mariano le envio el mensaje justo despues de que termine el intervalo, haciendo que su amigo tenga que esperar 5 minutos para ver el nuevo mensaje.

El funcionamiento es simple, javascript chequea, es decir, manda una solicitud a una pagina en php que retorna valores, en este caso, mensajes.

Lo que yo quiero saber, si es posible, que se mande la información, sin la necesidad de esperar a que el javascript lo haga, es decir, sin esperar que descargue la información del archivo.

Creo que sigo sin explicarme..lo que intengo explicar se me hace un poco difícil. Lo que quiero es que descargue la información cuando haya updates, y no como "por si acaso"(me refiero a que, pongamos que hago que haya un intervalo de 5 segundos, va a seguir chequeando cada 5 segundos aunque no haya actividad).

Esto me serviría suponiendo que:
-Hay 500 usuarios usando la página
-Cada 5 segundos javascript descarga información
Si 200 de los 500 usuarios no están usando la página pero tienen la pestaña abierta, generaría un tráfico innecesario en el servidor. En cambio, si se actualizara sólo cuando haya updates, no pasaría.

También quería saber si se puede hacer que cuando el usuario cierre la pestaña o la ventana del navegador javascript mande información al servidor actualizando su estado a desconectado. Se hacer que con el evento "unload" alerte un mensaje, pero no que mande información. No lo he probado y quería saber si se podía hacer.



Gracias de antemano.