2011-09-16 12 views
11

Zacząłem zaglądać do węzła i socket.io.chat.io z prywatnymi pokojami

Mam już stworzoną prostą aplikację do czatu i jestem zaskoczony, jak łatwo było.

Teraz chciałbym pójść trochę dalej i podać listę użytkowników online, którzy mogą ze sobą rozmawiać prywatnie.

Jaki byłby najlepszy sposób podejścia do tego?

Przeczytałem nową funkcję pokoju 0.7. Czy to byłaby droga? Dynamicznie utworzyć nowy pokój za każdym razem, gdy 2 użytkownicy będą musieli czatować prywatnie? Ale w jaki sposób drugi użytkownik zostanie powiadomiony o utworzeniu nowego pokoju, aby mógł się tam połączyć?

Czy lepiej sobie z tym poradzić? Przechowywać pokoje i stronę serwera po stronie użytkownika i przeglądać je za każdym razem i wysyłać wiadomości do odpowiednich?

Dzięki

Odpowiedz

13

Jeśli tylko funkcjonalność, jakiej chcesz dla dwóch osób, aby móc wysyłać wiadomości do siebie (a nie grup ludzi, aby mieć pokój), wówczas logika może być coś takiego:

  1. Gdy użytkownik łączy się, przechowuj jego połączenie w obiekcie z kluczem określonym przez jego nazwę użytkownika (lub w dowolnej innej strukturze danych, która zapewnia możliwość znalezienia połączenia określonego użytkownika).
  2. Gdy Bob chce rozmawiać z Jeffem, wyślij serwerowi informację o takim wydarzeniu.
  3. Serwer sprawdza połączenie Socket.IO Jeffa z obiektem od kroku 1.
  4. Serwer wykorzystuje to połączenie do wysyłania wiadomości prywatnej Jeff (i tylko Jeff).
+0

Dobrze. Oboje jesteście poprawni. Co zrobić, jeśli chcę mieć grupy osób? – Thomas

+0

Użyj wbudowanej funkcji Socket.IO lub zwiń ją, grupując połączenia w strukturę danych, a następnie powtórz tłumaczenie wszystkich członków w pokoju i wyślij dane w każdym z nich. –

+0

Wolałbym używać wbudowanej funkcjonalności, ale jak dynamicznie tworzyć i niszczyć pokoje? – Thomas

1

Hej Thomas

jeśli tam tylko 2 użytkowników rozmowy nie musisz użycie publikować att wszystko wystarczy wysłać tę wiadomość od klienta do serwera i niech serwer zlokalizować innego klienta i wysłać go na dół .

+0

Nie. Nie o to chodzi. Powiedzmy, że mam 100 użytkowników i np. Bob chce porozmawiać z Jeffem – Thomas

+1

właśnie o to mi chodziło, jeśli bob chce rozmawiać z jefferem, nie potrzebują tam własnego pokoju, po prostu wyślij go bezpośrednio do jeffa i wyślij "privateMsg", a on tylko pójdzie do jeffa . – megakorre

Powiązane problemy