Я разрабатываю приложение реального времени, используя Node.js, Socket, io, Redis. Я пытаюсь отправить личное сообщение одному клиенту у рабочего, но он не работает. Массив io.sockets.connected на рабочем месте пуст, и я не могу обратиться к клиенту.Как отправить личное сообщение (emit) из socket.io-redis
Код на мастера:
var io = require('socket.io')(30042); //socket.io(<port>) will create a http server
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));
io.on('connection', function (socket) {
io.sockets.connected[socket.id].adapter.remoteJoin(socket.id, 'new_room', function (err) {});
});
Кодекс работника:
var SocketIO = require('socket.io');
var redis = require('socket.io-redis');
io = new SocketIO(); //start redis socket-io
io.adapter(redis({host: 'localhost', port: 6379})); // where your redis server is located
//send to all users in room - works perfectly
io.to('new_room').emit('chat message', 'Test global msg from worker');
//????
//dont work - io.sockets.connected is empty
io.sockets.connected['socket_id_from_master'].emit('chat message', 'Test private msg from worker');
Что я делаю не так?
Я нашел выход: Каждое гнездо в Socket.io определяется случайным, неопределяемых, уникальный идентификатор Оправа # ид , Для вашего удобства каждый сокет автоматически присоединяется к комнате, идентифицированной этим идентификатором. Рабочий код: io.to (id) .emit («сообщение чата», «Проверить личное сообщение от рабочего»); –