2011-10-31 21 views

Odpowiedz

21

Z Socket.IO, nie jesteś ograniczony do używania tylko obiektu gniazda w ramach wywołania zwrotnego funkcji połączenia. Można utworzyć obiekt, który przechowuje obiekt gniazda dla określonej nazwy użytkownika i wyszukać gniazdo, aby wysłać wiadomość, gdy klient wyśle ​​wiadomość. Będziesz musiał przesłać zamierzony cel przy każdej wiadomości.

przykład:

var sockets = {}; 

... 

io.on('connection', function(socket){ 
    socket.on('set nickname', function (name) { 
     sockets[name] = socket; 
    }); 
    socket.on('send message', function (message, to) { 
     sockets[to].emit(message); 
    }); 
}); 

Więcej przykładów na examples page of Socket.IO's website.

+0

wielki, że jest to rozwiązanie –

+0

Jak obsługiwać „na” jest nie należą do żadnego pseudonimu? Na przykład; Pseudonim "A" jest wysyłany msg do pseudonimu "B", pseudonim "B" jest wysyłany msg do pseudonimu "C". I nie ma pseudonimu "C". Następnie podaj błąd = "nie można odczytać właściwości" wyślij "o niezdefiniowanym" – drojokef

0

można sprawdzić właściwość nazwę użytkownika wszystkich gniazd tak:

socket.on('send message', function(message,to){ 

    io.sockets.clients().forEach(function (socket) { 

     if (socket.username==to){socket.emit(message);} 

    }); 

}); 
Powiązane problemy