Verileri belirli bir soket kimliğine göndermek istiyorum.
Bunu eski sürümlerde yapabiliyorduk:
io.sockets.socket(socketid).emit('message', 'for your eyes only');
Socket.IO 1.0'da benzer bir şey yapmaya nasıl devam edebilirim?
Verileri belirli bir soket kimliğine göndermek istiyorum.
Bunu eski sürümlerde yapabiliyorduk:
io.sockets.socket(socketid).emit('message', 'for your eyes only');
Socket.IO 1.0'da benzer bir şey yapmaya nasıl devam edebilirim?
Yanıtlar:
Socket.io 1.0'da bunun için daha iyi bir yol sağlarlar. Her soket otomatik olarak kendi kimliğiyle varsayılan bir odaya katılır. Belgeleri kontrol edin: http://socket.io/docs/rooms-and-namespaces/#default-room
Böylece aşağıdaki kod ile id ile bir sokete yayabilirsiniz:
io.to(socketid).emit('message', 'for your eyes only');
Socket.io 1.0'da bunu aşağıdaki kodla yapabilirsiniz:
if (io.sockets.connected[socketid]) {
io.sockets.connected[socketid].emit('message', 'for your eyes only');
}
Güncelleme:
@ MustafaDokumacı'nın cevabı daha iyi bir çözüm içeriyor.
@Mustafa Dokumacı ve @ Meraklı zaten yeterince bilgi vermiş, soket id'sini nasıl alabileceğinizi ekliyorum.
Soket kimliğini almak için socket.id'yi kullanın :
var chat = io.of("/socket").on('connection',onSocketConnected);
function onSocketConnected(socket){
console.log("connected :"+socket.id);
}
Bir ad alanı kullandıysanız, aşağıdakilerin çalıştığını buldum:
//Defining the namespace <br>
var nsp = io.of('/my-namespace');
//targeting the message to socket id <br>
nsp.to(socket id of the intended recipient).emit('private message', 'hello');
Ad alanları hakkında daha fazla bilgi için: http://socket.io/docs/rooms-and-namespaces/
Hem @ Meraklı hem de @ MustafaDokumacı'nın işe yarayan çözümler sağladığına inanıyorum. Aradaki fark, @ MustafaDokumacı'nın çözümüyle mesajın yalnızca belirli bir müşteriye değil, bir odaya da yayınlanmasıdır.
Bir alındı bildirimi istendiğinde fark belirgindir.
io.sockets.connected[socketid].emit('message', 'for your eyes only', function(data) {...});
beklendiği gibi çalışır
io.to(socketid).emit('message', 'for your eyes only', function(data) {...});
ile başarısız
Error: Callbacks are not supported when broadcasting
Node.js'de -> socket.io -> indirmek için bir sohbet örneği var Bunu satıra yapıştır (bağlantıda io) kısmı ..% 100 çalışan bu kodu kullanıyorum
io.on('connection', function(socket){
socket.on('chat message', function(msg){
console.log(socket.id);
io.to(socket.id).emit('chat message', msg+' you ID is:'+socket.id);
});
});