Ich verwende Socket IO v1.4.5 und habe unten drei verschiedene Möglichkeiten ausprobiert, die aber kein Ergebnis haben.
client.emit('test', 'hahahaha');
io.sockets.socket(id).emit('test',''hahaha);
io.sockets.connected[id].emit('test','hahaha');
Hier ist meine Serverseite
var socket = require( 'socket.io' );
var express = require( 'express' );
var http = require( 'http' );
var dateFormat = require('date-format');
var app = express();
var server = http.createServer( app );
var io = socket.listen( server );
io.sockets.on( 'connection', function( client ) {
user[client.id]=client;
//when we receive message
client.on('message', function( data ) {
console.log( 'Message received from' + data.name + ":" + data.message +' avatar' +data.avatar );
client.emit('test', 'hahahaha');
});
Jede Hilfe wäre großartig. Danke für die Hilfe
Um eine Nachricht an einen bestimmten Kunden zu senden, müssen Sie Folgendes tun:
socket.broadcast.to(socketid).emit('message', 'for your eyes only');
Hier ist ein schöner kleiner Spickzettel für Steckdosen:
// sending to sender-client only
socket.emit('message', "this is a test");
// sending to all clients, include sender
io.emit('message', "this is a test");
// sending to all clients except sender
socket.broadcast.emit('message', "this is a test");
// sending to all clients in 'game' room(channel) except sender
socket.broadcast.to('game').emit('message', 'Nice game');
// sending to all clients in 'game' room(channel), include sender
io.in('game').emit('message', 'cool game');
// sending to sender client, only if they are in 'game' room(channel)
socket.to('game').emit('message', 'enjoy the game');
// sending to all clients in namespace 'myNamespace', include sender
io.of('myNamespace').emit('message', 'gg');
// sending to individual socketid
socket.broadcast.to(socketid).emit('message', 'for your eyes only');
Gutschrift an https://stackoverflow.com/a/10099325
Der einfachste Weg, anstatt direkt an die Steckdose zu senden, besteht darin, einen Raum für die zwei Benutzer zu erstellen und Nachrichten einfach dort frei zu senden.
socket.join('some-unique-room-name'); // Do this for both users you want to chat with each other
socket.broadcast.to('the-unique-room-name').emit('message', 'blah'); // Send a message to the chat room.
Andernfalls müssen Sie die einzelnen Client-Socket-Verbindungen nachverfolgen, und wenn Sie chatten möchten, müssen Sie diese Sockets-Verbindung nachschlagen und speziell die Verbindung mit der oben genannten Funktion ausgeben. Die Zimmer sind wahrscheinlich einfacher.
Mach das einfach
io.socket.in('room').emit("send message to everyone", data);
Socket.io Version 2.0.3+
Senden einer Nachricht an einen bestimmten Socket
let namespace = null;
let ns = _io.of(namespace || "/");
let socket = ns.connected[socketId] // assuming you have id of the socket
if (socket) {
console.log("Socket Connected, sent through socket");
socket.emit("chatMessage", data);
} else {
console.log("Socket not connected, sending through Push notification");
}