2011-09-16 25 views
11

Ho iniziato a cercare su node e socket.io.socket.io chat con stanze private

Ho già creato una semplice applicazione di chat e sono stupito di quanto sia stato facile.

Ora, vorrei fare un po 'di più e fornire un elenco di utenti online che hanno la possibilità di chattare tra loro in privato.

Quale sarebbe il modo migliore per avvicinarsi a questo?

Ho letto sulla nuova funzione della stanza 0.7. Sarebbe una strada da percorrere? Creare dinamicamente una nuova stanza ogni volta che 2 utenti devono chattare in privato? Ma come verrà notificato il secondo utente della nuova stanza, in modo che possa collegarsi lì?

È meglio gestire personalmente tutte le suddette logiche? Memorizza le stanze e gli utenti sul lato server e cicla su di loro ogni volta e invia messaggi a quelli appropriati?

Grazie

risposta

13

Se l'unica funzionalità che vogliamo è che due persone siano in grado di inviare messaggi a chiunque (e non gruppi di persone di avere una stanza), quindi la logica potrebbe essere qualcosa di simile:

  1. Quando un utente si connette, memorizza la propria connessione in un oggetto digitato dal proprio nome utente (o in qualsiasi altra struttura di dati che garantisce di trovare una specifica connessione dell'utente).
  2. Quando un Bob vuole parlare con Jeff, invia al server un evento che lo indichi.
  3. Il server cerca la connessione Socket.IO di Jeff nell'oggetto dal passaggio 1.
  4. Il server utilizza questa connessione per inviare a Jeff (e solo Jeff) il messaggio privato.
+0

Giusto. Siete entrambi corretti. Che cosa succede se desidero avere gruppi di persone – Thomas

+0

Utilizzare la funzione Socket.IO incorporata, oppure eseguire il rollover raggruppando le connessioni insieme in una sorta di struttura dati, quindi eseguire un'iterazione su tutti i membri in una stanza e inviare i dati in ciascuno di essi. –

+0

Preferirei utilizzare la funzionalità integrata, ma come si può creare e distruggere dinamicamente le stanze? – Thomas

1

Hej Thomas

se ci sono solo 2 utenti si parla non avete bisogno di uso pubblicare att tutto basta inviare quel messaggio dal client al server e lasciare che il server di individuare l'altro client e inviarlo giù .

+0

No. Questo non è il caso. Diciamo che ho 100 utenti e cioè Bob vuole parlare con Jeff – Thomas

+1

giusto che era il mio punto se bob vuole parlare con jeff non hanno bisogno di una propria stanza basta inviarlo direttamente a jeff ed emettere "privateMsg" e andrà solo a jeff . – megakorre