Domanda

sto armeggiando un po 'con WebSockets, ed è stato abbastanza soddisfatto di quanto sia stato facile per ottenere un server in esecuzione tornado che fa connessioni websocket di base. Non ho mai usato Tornado prima di oggi, e mentre mi piace quello che ho visto ci sono alcune domande che ho per quanto riguarda il suo impiego.

In primo luogo, sto usando WebSockets in modo che io possa avere comunicazioni basso overhead tra due o più macchine client. (Ai fini della conversazione diciamo solo che è un client di chat) Ovviamente posso collegarmi al server da più macchine, e possono tutti i messaggi push al server e il server può rispondere, che è grande! Ma non è troppo molto meglio di quanto le vostre richieste AJAX standard. Se ho una connessione persistente voglio essere in grado di spingere i dati ai clienti pure. Lo scenario più semplice possibile è utente 1 inserisce un messaggio al server e sulla ricezione esso il server spinge immediatamente all'utente 2.

Che cosa sarebbe un buon modo per realizzare questo? Per quanto posso vedere in Tornado non c'è modo di comunicare tra le connessioni di altri di piazzare il messaggio in una qualche parte datastore e aventi tutte le altre connessioni sondaggio per nuove informazioni. Che mi colpisce come se terribilmente goffo, perché tutto quello che stai facendo davvero a quel punto si sta muovendo la procedura di polling dal client al server.

Naturalmente, I può essere abbaiare contro l'albero sbagliato tutto qui. E 'certamente plausibile che Tornado semplicemente non è lo strumento giusto per questo lavoro, e se questo è il caso sarei felice di sentire i suggerimenti di alternative!

È stato utile?

Soluzione

Ecco un server di chat utilizzando tornado, WebSockets e Redis: https://gist.github.com/ Pelletier / 532.067 ( aggiornamento : collegamento fisso, grazie @SamidhT)

Altri suggerimenti

Anche se la risposta è già stata accettata: Utilizzo di un servizio diverso sembra ancora molto inefficiente per me. Perché non basta andare con la memoria + condizionali variabili / semafori condivisi? Sembra che tu hai un problema standard del consumatore-produttore

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top