6 ответов:
In socket.io 1.0 они обеспечивают лучший способ для этого. Каждый сокет автоматически присоединяется к комнате по умолчанию по самоидентификации. Проверьте документы:http://socket.io/docs/rooms-and-namespaces/#default-room
таким образом, вы можете излучать в сокет по идентификатору со следующим кодом:
io.to(socketid).emit('message', 'for your eyes only');
в гнездо.Ио 1.0 вы можете сделать это с помощью следующего кода:
if (io.sockets.connected[socketid]) { io.sockets.connected[socketid].emit('message', 'for your eyes only'); }обновление:
@MustafaDokumacı ответ содержит лучшее решение.
@Mustafa Dokumacı и @Curious уже предоставили достаточно информации, я добавляю, как вы можете получить идентификатор сокета.
чтобы получить идентификатор сокета используйте socket.id:
var chat = io.of("/socket").on('connection',onSocketConnected); function onSocketConnected(socket){ console.log("connected :"+socket.id); }
Если вы использовали пространство имен, я обнаружил, что работает следующее:
//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');подробнее о пространствах имен: http://socket.io/docs/rooms-and-namespaces/
Я считаю, что и @Curious и @MustafaDokumacı предоставили решения, которые хорошо работают. Разница, однако, в том, что с решением @MustafaDokumacı сообщение передается в комнату, а не только конкретному клиенту.
разница заметна, когда требуется подтверждение.
io.sockets.connected[socketid].emit('message', 'for your eyes only', function(data) {...});работает, как ожидалось, в то время как
io.to(socketid).emit('message', 'for your eyes only', function(data) {...});выдает
Error: Callbacks are not supported when broadcasting
в узел.js --> socket.io --> есть пример чата для загрузки Вставьте это в строку (io при подключении) часть.. я использую этот код, который работает 100%
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); }); });
Comments