Aby wysłać coś do wszystkich klientów, używasz:
io.sockets.emit('response', data);
Aby otrzymywać od klientów, używasz:
socket.on('cursor', function(data) {
...
});
Jak połączyć te dwa elementy, aby po otrzymaniu wiadomości na serwerze od klienta wysyłałem tę wiadomość do wszystkich użytkowników oprócz tego, który ją wysyła?
socket.on('cursor', function(data) {
io.sockets.emit('response', data);
});
Czy muszę go zhackować, wysyłając identyfikator klienta z wiadomością, a następnie sprawdzając po stronie klienta, czy jest to łatwiejszy sposób?
javascript
node.js
socket.io
switz
źródło
źródło
io
tutaj. tylkosocket
// sending to all clients except sender
tego, do czego używać// sending a response to sender client only
?socket.to('others').emit('an event', { some: 'data' });
także w pokoju.Z odpowiedzi @LearnRPG, ale z wersją 1.0:
Aby odpowiedzieć na komentarz @ Crashalot,
socketid
pochodzi z:źródło
socketid
za wysłanie do pojedynczego gniazda?socket.id
z obiektu gniazda.Oto pełniejsza odpowiedź na temat zmian z wersji 0.9.x na 1.x.
Chciałem edytować post @soyuka, ale moja edycja została odrzucona przez recenzenta.
źródło
broadcast.emit wysyła wiadomość do wszystkich innych klientów (z wyjątkiem nadawcy)
źródło
Emituj ściągę
źródło
Dla przestrzeni nazw w pokojach zapętlanie listy klientów w pokoju (podobnie do odpowiedzi Nav) jest jednym z dwóch podejść, które znalazłem, które będą działać. Drugim jest użycie wykluczenia. NA PRZYKŁAD
źródło
Inne przypadki
źródło
Zaktualizowano listę do dalszej dokumentacji.
Mam nadzieję że to pomoże.
źródło
użyj tego kodowania
Ta funkcja socket.broadcast.emit () będzie emitować wszystko w funkcji oprócz serwera, który emituje
źródło
io
jeśli wywołanie zwrotne jest zdefiniowane wio
jako globalnyKorzystam z przestrzeni nazw i pokoi - znalazłem
do pracy gdzie
nie
(czy ktokolwiek inny napotka ten problem)
źródło