Die Readme-Datei von Socket.io enthält das folgende Beispiel:
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.join('justin bieber fans');
socket.broadcast.to('justin bieber fans').emit('new fan');
io.sockets.in('rammstein fans').emit('new non-fan');
});
Was ist der Unterschied zwischen socket.broadcast.to()
und io.sockets.in()
?
Antworten:
socket.broadcast.to
Sendungen an alle Steckdosen im angegebenen Raum, mit Ausnahme der Steckdose, an der sie aufgerufen wurden, währendio.sockets.in
Sendungen an alle Steckdosen im angegebenen Raum gesendet werden.quelle
Node.js war etwas, das mich schon lange wirklich interessiert hat, und ich habe es in einem meiner Projekte verwendet, um ein Multiplayer-Spiel zu erstellen.
io.sockets.in().emit()
undsocket.broadcast.to().emit()
sind die beiden wichtigsten Emit-Methoden, die wir in den Räumen von Socket.io verwenden ( https://github.com/LearnBoost/socket.io/wiki/Rooms ). Räume ermöglichen eine einfache Partitionierung der verbundenen Clients. Dies ermöglicht die Ausgabe von Ereignissen an Teilmengen der Liste der verbundenen Clients und bietet eine einfache Methode zu deren Verwaltung.Sie ermöglichen es uns, die Teilmengen der Liste der verbundenen Clients (die wir Räume nennen) zu verwalten und verfügen über ähnliche Funktionen wie die Hauptfunktionen von socket.io
io.sockets.emit()
undsocket.broadcast.emit()
.Auf jeden Fall werde ich versuchen, die Beispielcodes mit den zu erklärenden Kommentaren anzugeben. Sehen Sie, ob es hilft;
Socket.io Zimmer
i) io.sockets.in (). emit ();
ii) socket.broadcast.to (). emit ();
Socket.io
i) io.sockets.emit ();
ii) socket.broadcast.emit ();
Prost
quelle
Update 2019 : socket.io ist ein spezielles Modul, das Websockets verwendet und dann auf die Abfrage von http-Anforderungen zurückgreift. Nur für Websockets: Verwenden Sie für den Client native Websockets und für node.js ws oder diese Bibliothek.
Einfaches Beispiel
Die Syntax ist in socketio verwirrend. Außerdem wird jeder Socket automatisch mit der ID mit seinem eigenen Raum verbunden
socket.id
(so funktioniert der private Chat in Socketio, sie verwenden Räume).An den Absender und sonst niemanden senden
Senden Sie an alle, einschließlich des Absenders (wenn der Absender im Raum ist) im Raum "Mein Zimmer"
Senden Sie an alle außer dem Absender (wenn der Absender im Raum ist) im Raum "Mein Zimmer"
Senden Sie an alle in jedem Raum , einschließlich des Absenders
Nur an einen bestimmten Socket senden (privater Chat)
quelle
otherSocket.on('connect',()=> { console.log(otherSocket.id); });
quelle
In Socket.IO 1.0 sind .to () und .in () identisch. Und andere im Raum erhalten die Nachricht. Der Client sendet die Nachricht nicht.
Überprüfen Sie den Quellcode (v1.0.6):
https://github.com/Automattic/socket.io/blob/a40068b5f328fe50a2cd1e54c681be792d89a595/lib/socket.js#L173
quelle
.to()
und,in
sind die gleichen, was würde dann passieren, wenn ich einen Raum mit genau dem gleichen Namen wie die ID einer Steckdose erstelle. Was würdesocket.broadcast.to(socketid)
zum Beispiel dann tun?