2012-12-27 12 views
9

So che possiamo farlo eseguendo il polling per le modifiche a intervalli regolari. E questo può essere ottenuto da AJAX (ad esempio utilizzando jQuery.load() insieme a setInterval()).Invia modifiche a una pagina Web senza aggiornare

Ma voglio sapere che ci sono altri metodi per farlo? Altri metodi meno costosi o metodi più efficienti? Che logica segue un fantastico client di chat? Non appena inizi a digitare, l'altra parte viene a sapere che stai scrivendo.

Quale meccanismo seguiamo qui su StackOverflow per aggiornare il conteggio dell'outvote o per mostrare che una modifica è stata apportata ecc. Ecc. Senza che la pagina sia aggiornata?

+0

qui è la domanda che ho fatto qualche tempo fa http://stackoverflow.com/questions/13666872/php-chat-application-questions – BLOB

+2

Questo potrebbe essere un buon inizio: http://www.google.com/search?q=google+comet+programming –

+0

Grazie a Pranav, lo sapevo anch'io :) Così skype, gtalk ecc usano tutti questa tecnica stessa o ci sono altri modi ? – Amar

risposta

16

Quando si tratta di mantenere il client e server in-sync in (quasi) in tempo reale, ci sono 3 cose che vengono subito in mente:

  • polling lungo: hai già parlato di questo uno, dove hai un timer impostato sul client che attiva una nuova richiesta AJAX ogni 10 secondi circa. Questo è probabilmente il più "low tech" del 3 e il meno efficiente; Ma è anche il più compatibile (il che significa che funziona in tutti i browser, anche cose come IE6/7)

  • WebSockets: sdespont già menzionato questo uno nei commenti. Mentre WebSockets è più efficiente del polling lungo (poiché mantiene semplicemente la comunicazione bidirezionale client-server aperta indefinitamente), può essere una soluzione molto pesante se tutto ciò che stai cercando di fare è ottenere aggiornamenti regolari dal server. Tutte le versioni di Firefox e Chrome lo supportano, and IE added support in IE10

  • eventi server-inviato: questa sembra essere meno popolare (o semplicemente non come ben noto). Permette al server di inviare modifiche al client (come opposto al client che richiede modifiche dal server, come nel caso del polling lungo). Anche questa è solo una comunicazione unidirezionale (server -> client) e la connessione viene chiusa dopo che la richiesta è stata completata (in opposizione a WebSockets in cui la comunicazione bidirezionale rimane aperta). Ancora una volta, non tutti i browser supportano, and there is no IE support at all

This è anche un buon articolo che spiega la differenza tra i modi più moderni di comunicazione client-server. E se volete maggiori informazioni sugli eventi server-inviato, this is a good write up

Problemi correlati