J'utilise Socket IO v1.4.5 et j'ai essayé 3 manières différentes ci-dessous mais je n'ai aucun résultat.
client.emit('test', 'hahahaha');
io.sockets.socket(id).emit('test',''hahaha);
io.sockets.connected[id].emit('test','hahaha');
Voici mon côté serveur
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');
});
Toute aide serait formidable.Merci de l'aide.Kind Regard
Pour envoyer un message à un client spécifique, vous devez le faire comme suit:
socket.broadcast.to(socketid).emit('message', 'for your eyes only');
Voici un joli petit aide-mémoire pour les sockets:
// 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');
Crédit à https://stackoverflow.com/a/10099325
Le moyen le plus simple, plutôt que d’envoyer directement au socket, serait de créer une pièce à utiliser pour les 2 utilisateurs et d’envoyer simplement des messages librement.
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.
Sinon, vous devrez garder une trace de la connexion de socket de chaque client, et lorsque vous voulez discuter, vous devez rechercher cette connexion de sockets et émettre spécifiquement vers celle-ci en utilisant la fonction que j'ai décrite ci-dessus. Les chambres sont probablement plus faciles.
Faites ceci simplement
io.socket.in('room').emit("send message to everyone", data);
Socket.io Version 2.0.3+
Envoi d'un message à un socket spécifique
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");
}