2012-05-30 22 views
31

Ahora las actualizaciones diarias en tiempo real son comunes en la mayoría de los sitios populares que tienen muchos usos.¿Cómo funcionan las actualizaciones en tiempo real?

Me pregunto, ¿cómo estas "actualizaciones en tiempo real" funcionan? Solo estoy buscando una perspectiva general de vista de pájaro. Sospecho que el JS no puede llamar al servidor cada X segundos para una actualización y luego anexarlo al <ul>. ¿Se envió una notificación desde el servidor para extraer más contenido?

¿Sería genial si hay un artículo simple que explica esto con una demostración?

+5

Dos palabras: [Web Sockets] (http://en.wikipedia.org/wiki/WebSocket) – Dennis

+1

[Esto es] (http://en.wikipedia.org/wiki/WebSocket) [ HTML5] (http://www.html5rocks.com/en/tutorials/websockets/basics/). –

+21

Una palabra: [WebSocket] (http://en.wikipedia.org/wiki/WebSocket) –

Respuesta

22

Stack Overflow utiliza Web Sockets para actualizaciones en tiempo real. Si se echa un vistazo en el código fuente (línea 35), que se vería:

StackExchange.ready(function() { 
    StackExchange.realtime.init('ws://sockets.ny.stackexchange.com'); 
    StackExchange.realtime.subscribeToInboxNotifications(); 
    StackExchange.realtime.subscribeToReputationNotifications('1'); 
}); 

Pero tenga en cuenta que algunas versiones de Opera no es compatible con WebSocket. (not until Opera 10.70)

Sin embargo Facebook no parece utilizar Web sockets, y yo creo que simplemente están utilizando XHR simple con una técnica llamada long polling, que el servidor se aferra a la conexión hasta que haya nueva información, y luego el servidor responderá a la solicitud. Si abre las herramientas de desarrollador puede ver que siempre hay una solicitud que tiene un estado de pendiente.

De hecho, está enviando una solicitud cada ~ 60 segundos.

2

Parece que Twitter también usa XHR simple (intervalos de 1 minuto) para sus "actualizaciones en tiempo real".

0

Facebook utiliza long polling/Comet. Entonces hace una conexión y espera una respuesta, si no hay respuesta, se agota y vuelve a intentarlo. El tiempo de espera es de alrededor de 40 segundos. Así es como hace la mayor parte de la actualización instantánea. Sin embargo, usan una combinación de técnicas. Más sobre largas encuestas aquí.

http://en.wikipedia.org/wiki/Comet_(programming)

Cuestiones relacionadas