2015-02-23 11 views
5

Ho una webapp per i pipistrelli che esegue i panda per eseguire un'analisi dei dati sul back-end.muffa-socketio una stanza per utente? costoso?

In questo momento, ho adottato l'approccio ingenuo di utilizzare AJAX affinché l'utente possa inviare query al server e interagire con i dati. ma a quanto pare c'è un sacco di spese generali con ogni richiesta e ogni volta ho bisogno di ricaricare i dati in panda/memoria che è molto ripetitivo.

Stavo pensando che il socketio potrebbe essere utile qui: aprirò una connessione socket e in questo modo una volta caricato il file in panda, l'utente potrebbe interagire e interrogare i dati in modo più reattivo con meno overhead attraverso il socket.

Quindi la mia domanda adesso è:

  • Devo aprire una stanza per ogni utente come dont gli utenti hanno bisogno di interagire con l'altro?
  • Questa scala - apre una stanza per utente?
  • Dove si trova lo spazio dei nomi qui? Assegnare lo spazio dei nomi a diverse sezioni del sito Web e aprire ulteriormente le stanze sotto ogni spazio dei nomi per ciascun utente?
  • Oppure dovrei spawnare un thread rattoppato da scimmia? Greenlet per utente?
+0

Supponendo che 1 utente = 1 connessione websocket e che si stia utilizzando effettivamente socket.io, non sarà necessario creare un'istanza di una nuova stanza manualmente ogni volta che un nuovo utente si connette; socket.io crea automaticamente una stanza unica per ogni connessione. – theaccordance

risposta

8

L'apertura di una stanza per utente è una soluzione valida che di solito raccomando come modo per essere facilmente in grado di indirizzare i singoli utenti nei messaggi server-pushed.

Le stanze sono conservate in una struttura dati Python in memoria, quindi sono costose solo perché usano un po 'di memoria. Non ho misurato l'importo per utente, ma probabilmente sono solo pochi byte in cima al nome della stanza.

Lo spazio dei nomi viene utilizzato per il multiplexing di più connessioni diverse in un canale fisico. Se hai solo una connessione, usa lo stesso spazio dei nomi per tutto. Dovresti utilizzare più spazi dei nomi se, ad esempio, hai due app lato client nella tua pagina (come app angolari), ciascuna con il proprio set di gestori di eventi. Oltre a questo non c'è motivo di usare più di un namespace.

Spero che questo aiuti.

+0

Perfetto. Grazie Miguel. Grande fan del tuo libro, post del blog ... –

Problemi correlati