Я пытаюсь настроить сервер, который может динамически создавать много комнат для многих пространств имен. В настоящее время я просто пытаюсь вещать на сокеты комнаты, когда к ней присоединился новый сокет.
До сих пор я мог вещать в определенное пространство имен, и мои слушатели событий на клиенте получают сообщение. Однако, когда я пытаюсь вещать в комнату с определенным пространством имен, мой слушатель событий не получает это сообщение.
Я включил режим отладчика и вижу socket.io-client:socket
, генерирующий событие с правильной полезной нагрузкой и типом события. Так что я не уверен, что мне не хватает, так как документация также кажется довольно простой. Любая помощь приветствуется. Ниже мой код.
Сервер
const colorNs = io.of('/color');
colorNs.on('connection', (socket) => {
const { id } = socket.handshake.query;
const { id:connId } = socket.conn;
if(id) {
socket.join(id);
socket.broadcast.to(id).emit('user:connect', { id: connId });
}
socket.on('disconnect', () => {
const { id } = socket.handshake.query;
const { id:connId } = socket.conn;
socket.broadcast.to(id).emit('user:disconnect', { id: connId });
});
});
Клиент
const socket = io('/color?id="123"');
socket.on('user:connect', () => console.log('data', data));
Клиент - трассировка отладки
socket.io-parser decoded 2/color,["user:connect",{"id":"IZTTPidF121JCzf9AAAO"}] as {"type":2,"nsp":"/color","data":["user:connect",{"id":"IZTTPidF121JCzf9AAAO"}]} +1ms
browser.js:133
socket.io-client:socket emitting event ["user:connect",{"id":"IZTTPidF121JCzf9AAAO"}] +3ms