#node.js #socket.io
#node.js #socket.io
Вопрос:
У меня есть следующий код в моем модуле приложения.
var socket_io = require( 'socket.io' );
const io = socket_io();
io.on( "connection", function( socket ) {
console.log(io.sockets.connected[socket.id]);
}
Это возвращает сокет.
Следующая функция в моем модуле приложения возвращает undefined:
var emit_to_socket = function (id) {
console.log(io.sockets.connected[id]);
}
Когда я использую io.emit(), клиент получает сообщение; однако сообщение транслируется всем клиентам:
var emit_to_socket = function (id) {
io.emit('message');
}
Мне нужно знать, как отправлять сообщения в определенный сокет.
Комментарии:
1. Вы не показываете нам, как вы звоните
emit_to_socket(id)
. Вы должны использоватьio.to(id)
, и это будет работать до тех пор, покаid
значение является действительным и текущим. Итак, нам нужно было бы посмотреть, откуда вы получаете этот идентификатор и как вы его используете.
Ответ №1:
Вы можете использовать
socket.to(<desired_socket_id>).emit('message')
Ниже приведен пример из документации:https://socket.io/docs/server-api/#socket-to-room
io.on('connection', (socket) => {
socket.on('say to someone', (id, msg) => {
// send a private message to the socket with the given id
socket.to(id).emit('my message', msg);
});
});