2009-05-31 6 views
34

Sono sicuro che Wave non esegue il polling del server ogni millisecondo per scoprire se l'altro utente ha digitato qualcosa ... quindi come posso vedere cosa sta scrivendo l'altra persona mentre digita? E senza tralasciare la larghezza di banda.Come funziona la digitazione in tempo reale in Google Wave?

+0

Ci sono alcune informazioni in una delle risposte qui http://stackoverflow.com/questions/928744/what-technologies-is-google-wave-using –

risposta

38

HTTP persistente, Comet

mantenere il vostro collegamento HTTP vivo e inviare caratteri che vengono digitati

* Edit nel 2014: anche, dare un'occhiata a WebSocket e HTTP/1.1 Upgrade header. I browser hanno iniziato a implementarlo intorno al 2010, quindi aggiungo questo alla risposta originale.

+0

vuol davvero usare Comet bcoz esso uso GWT? –

+5

comet è una parola d'ordine, non è un framework definito o una tecnologia. è possibile implementare con GWT, senza GWT, e come più vi piace –

6

Probabilmente utilizzano Web Socket, ovvero eventi inviati dal server: http://www.w3.org/TR/websockets Il protocollo sottostante può essere trovato (come bozza) at the IETF.

Aggiornamento: non sembra che WebSockets abbia ancora alcuna implementazione; e a video from Google I/O (vai alle 11:00) parla di una richiesta GET HTTP longeva.

+0

non sapevo che ci fosse una restrizione del genere per gli utenti! Ti voterò per darti qualche altro rappresentante. –

+0

Grazie per il tuo voto, ora ho modificato la mia risposta per includere "più di un collegamento ipertestuale", e quindi in realtà link al progetto IETF. –

1

Speculazione pura ma potrebbe utilizzare gli eventi Server Side DOM dalle specifiche HTML 5?

3

vedi video Google Wave: Powered by GWT intorno al minuto 55 (verso la fine)

D: Come si sceglie di implementare le connessioni persistenti, i collegamenti a lunga vita http

A: piano futuro: HTML5 Web Sockets. Lungo termine. Questo è quello che usiamo al momento.

D: C'è una piattaforma o una libreria per questo che possiamo scaricare e giocare?

A: Non sicuro. Non la penso così

P.S .: Questo è quello che ha detto. Per me non aveva molto senso ("piani futuri" vs "utilizzo al momento"). Qualunque madrelingua inglese potrebbe voler verificare se ho trascritto correttamente?

+3

È confuso perché è leggermente fuori dal contesto. La risposta significava fondamentalmente: sì, stiamo usando richieste sospese (dette anche "comete"). Il piano futuro è quello di passare a WebSockets quando le implementazioni sono disponibili. –

+0

il link è un @ Tom 404 –

+0

: Non per me – Casebash

0

Probabilmente cometa per ora websocket in futuro. Perché funziona in Firefox 3.5 e da quello che ho letto il websocket è disponibile solo nelle build notturne di FF ... Potrei sbagliarmi ... visto che non funziona affatto in IE.

4

Server Push in GWT

server push è l'attesa, risponde, Close, riaprire paradigma:

  • Attendere: Quando il codice GWT effettua una chiamata al server per alcuni dati che si non ho ancora, congelare (attesa)

  • rispondere: Una volta che i dati richiesti sono
    disponibili, rispondere con esso

  • Chiudi: quindi, chiude la connessione.

  • Riaperto: una volta che il codice GWT riceve la risposta, aprire immediatamente una nuova connessione per richiedere l'evento successivo.

-1

Suppongo che utilizzino richieste ajax. Esegui una richiesta XMLHttpRequest, che è asincrona, e quando il server ha qualcosa da inviare al browser, il callback javascript registrato ottiene i dati e fa qualsiasi cosa con esso. Quindi in pratica il browser richiede l'evento successivo, lo gestisce, lo ripete indefinitamente.

+0

XMLHttpRequest è inviare una sola volta, in caso di mancata risposta, la connessione viene terminata, che. nessuno aspetterà nulla. che cosa fa la tecnologia "cometa", richiesta GET non infinita .. leggi questo su wiki. – holms

1

l'intero motivo per WebSockets è quello di avere il browser a mantenere una presa bidirezionale aperta a un server in modo che le comunicazioni in tempo reale possono essere utilizzati. Quando qualcuno digita dall'altra parte, in un client wave, attiva un evento che viene inviato al server e il server a sua volta cerca di vedere chi dovrebbe ricevere l'evento e passargli l'evento, in questo caso la lettera digitata.

WebSocket e Comet sono diversi.

Granville

0

ho trascorso qualche tempo reverse-engineering del codice del client Google Wave (senza vergogna per il http://antimatter15.com/misc/read/ che è una sola lettura cliente pubblico per Google Wave per tutte le onde pubblici senza bisogno di robot o gadget che è stato un molto più utile un mese fa quando Google non ha lanciato gli aggiornamenti).

In ogni caso, Google utilizza il framework GWT con alcuni aspetti della libreria di Google Closure (che è in realtà open source e documentata) e utilizza la libreria goog.net.BrowserChannel, che dai commenti viene utilizzata anche per le funzionalità di chat all'interno gmail.

http://closure-library.googlecode.com/svn/docs/closure_goog_net_browserchannel.js.html