Chcę wysłać dane do jednego określonego identyfikatora gniazda.
Kiedyś mogliśmy to robić w starszych wersjach:
io.sockets.socket(socketid).emit('message', 'for your eyes only');
Jak bym zrobił coś podobnego w Socket.IO 1.0?
Chcę wysłać dane do jednego określonego identyfikatora gniazda.
Kiedyś mogliśmy to robić w starszych wersjach:
io.sockets.socket(socketid).emit('message', 'for your eyes only');
Jak bym zrobił coś podobnego w Socket.IO 1.0?
W socket.io 1.0 zapewniają lepszy sposób na to. Każde gniazdo automatycznie dołącza do pokoju domyślnego według własnego identyfikatora. Sprawdź dokumenty: http://socket.io/docs/rooms-and-namespaces/#default-room
Możesz więc emitować do gniazda przez id z następującym kodem:
io.to(socketid).emit('message', 'for your eyes only');
W socket.io 1.0 możesz to zrobić za pomocą następującego kodu:
Aktualizacja:
Odpowiedź @ MustafaDokumacı zawiera lepsze rozwiązanie.
źródło
@Mustafa Dokumacı i @Curious dostarczyli już wystarczających informacji, dodaję, w jaki sposób można uzyskać identyfikator gniazda.
Aby uzyskać identyfikator gniazda, użyj socket.id :
źródło
Jeśli korzystałeś z przestrzeni nazw, zauważyłem, że działa:
Więcej o przestrzeniach nazw: http://socket.io/docs/rooms-and-namespaces/
źródło
Uważam, że zarówno @Curious, jak i @ MustafaDokumacı zapewniły rozwiązania, które działają dobrze. Różnica polega jednak na tym, że dzięki rozwiązaniu @ MustafaDokumacı wiadomość jest transmitowana do pokoju, a nie tylko do konkretnego klienta.
Różnica jest wyraźna, gdy wymagane jest potwierdzenie.
działa zgodnie z oczekiwaniami, podczas gdy
zawodzi z
źródło
w Node.js -> socket.io -> jest przykład czatu do pobrania Wklej to w linii (io przy połączeniu) część .. używam tego kodu, który działa w 100%
źródło