2016-03-19 30 views
0

Yerel olarak bir ileti göndermeyi ve yayının socket.broadcast.emit() işlevini nasıl göndereceğini biliyorum: - tüm bağlı istemciler aynı iletiyi alır.socket.io ile bir istemciye nasıl mesaj gönderilir

Şimdi, belirli bir müşteriye özel mesaj göndermek için nasıl bilmek istiyorum, ben 2 kişi (Müşteri-To-Client akışı) arasındaki özel bir sohbet için bir soket anlamına gelir. Teşekkürler.

cevap

1

sunucu tarafı:

var usersConnectedTo = {}; 

io.on('connection', function(socket){ 

socket.on('set_socketid', function(user){ 
    usersConnectedTo[user] = socket.id; // if usersConnectedTo[user] is undefined 
}); 
socket.on('private_message', function(private_msg){ 
    var id = usersConnectedTo[private_message.user]; 
    io.to(id).emit('private_message', private_message.msg); 
    }); 
}); 

istemci tarafı:

io.emit('user', user1+user2); // user should be such that when A connects to B for 
// first time or B connects to B for first time, it should always return same user. 

io.emit('private_message', { 
    user: user1+user2, 
    msg: 'private_msg' 
}); 

usersConnectedTo değişken depolar her özel sohbet için socketid. arasındaki sohbet (A, B) ve (A, C) için farklı socket.id kaydetmek için

, socket.id AB ve AC olarak kaydedilir.

kullanıcı ve private_message syncronously yayılan edilmelidir.

0

EMİN: Basitçe,

Bu

ne ihtiyaç vardır:

io.to(socket.id).emit("event", data); 

bir kullanıcı sunucuya katıldı zaman, soket ayrıntıları ID.This kimliği gerçekten göndermek için yardımcı olan dahil oluşturulacak belirli insanlara mesaj.

ilk biz

burada
var people={}; 

    people[name] = socket.id; 

adı alıcısı adıdır dizideki tüm socket.ids saklamak gerekir. Örnek: Biz mesajı gönderiyor her

people["trojan"]=2387423cjhgfwerwer23; 

Mademki artık alıcısı adıyla o socket.id alabilirsiniz: Biz recievername.You bilmek gerekir bunun için

için reciever adını yayarlar gerekir sunucusu.

son şeydir.

socket.on('chat message', function(data){ 
    io.to(people[data.reciever]).emit('chat message', data.msg); 
    }); 

Umut bu sizin için iyi çalışır !! Good Luck

İlgili konular