Как получить список всех сокетов из любого воркера socket.io

решил я значит масштабировать своё приложение на NodeJS с помощью кластеров на pm2.

Допустим, у меня есть 4 воркера4 Запущенных воркера на pm2

И я хочу слать event определённому сокету из любого из воркеров

Мне нужно как-то получать ВСЕ сокеты на ВСЕХ воркерах из ЛЮБОГО воркера, чтобы искать нужный и использовать emit

Например:

function getAllSocketsFromAllWorkers() {
    return allSockets;
}

const allSockets = getAllSocketsFromAllWorkers();
const socket = allSockets.find(socket => socket.userId === 123123);
socket.emit('notification', 'Hello!');

Код на стороне сервера:

const SocketIO = require('socket.io');
const redis = require('socket.io-redis');

const io = SocketIO(3000);

io.adapter(
    redis({
        host: 'localhost',
        port: 6379
    })
);

io.on('connection', (socket) => {
    console.log('NEW CONNECTION');

    const userId = socket.handshake.query.userId;

    if (!userId) {
        socket.emit('userId is not defined', null);
        socket.disconnect();

        return;
    }

    socket.userId = userId; // userId === 123123
});

Ответы (0 шт):