2012-07-14 34 views
5

Potrzebuję zbudować chatę twosome, używając websockets (socket.io + node.js). Tak więc, prosty przykład na nadawanie wiadomości do wszystkich użytkowników:socket.io - broadcast dla niektórych użytkowników

socket.on('user message', function (msg) { 
    socket.broadcast.emit('user message', socket.nickname, msg); 
    }); 

Ale jak mogę nadawać go od pewnego użytkownika do określonego użytkownika?

Odpowiedz

13

Istnieją dwa realnych możliwościach:

1) Każde gniazdo ma swój własny unikalny identyfikator ID przechowywane w socket.id. Jeśli znasz identyfikator zarówno dla użytkowników, można po prostu użyć

io.sockets[id].emit(...) 

2) Określ swój własny identyfikator (na przykład nazwy użytkownika) i używać

socket.join('priv/John'); 

w connection obsługi. Teraz, kiedy chcesz wysłać wiadomość tylko do John, wystarczy zrobić

socket.broadcast.to('priv/John').emit(...) 

marginesie: pierwsze rozwiązanie pod warunkiem nie mogą być skalowane do wielu maszynach, więc radą i Korzystanie drugi.

+2

Przechowuję użytkowników w MySQL z szynami, więc jak mogę powiązać identyfikatory użytkowników z db do identyfikatorów gniazd? –

Powiązane problemy