Я новичок во всей теме веб-сокетов, поэтому, пожалуйста, поймите меня.
Я пытаюсь отправить сообщение с сервера всем людям в комнате, кроме меня.Я отправитель, поэтому я должен получать эти сообщения.
Но в любом случае Socket.io все еще отправляет эти сообщения мне.Я сделал все со ссылкой на документацию.
Проверьте мой код:сервер:
const io = require('socket.io');
// Sever is an instance of express.js server comming from outside
const ioInstance = io(server);
ioInstance.on('connection', socket => {
const {
request: { user }
} = socket;
const userExist = user || false;
if (!userExist) {
return;
}
socket.on('joinRoom', room => {
socket.join(room);
});
socket.on('leavingRoom', listId => {
socket.leave(`list-${listId}`);
});
updateItemState(socket);
});
};
const updateItemState = socket => {
socket.on('item-busy', data => {
const { listId } = data;
console.log('item is busy');
console.log(data);
socket.to(`list-${listId}`).emit('item-busy', data);
});
};
клиент:
ItemComponent.jsx
import io from 'socket.io-client';
handleSocketConnection = () => {
const {
match: {
params: { id: listId }
}
} = this.props;
if (!this.socket) {
this.socket = io();
}
this.socket = io();
this.socket.on('connect', () =>
this.socket.emit('joinRoom', `list-${listId}`)
);
this.socket.on('item-busy', data => {
const { itemId, listId } = data;
console.log('this item is busy');
});
};
Теперь я запускаю свое приложение на двух экземплярах браузера.У меня Chrome Canary на левой стороне, любой обычный Chrome от меня выделяет событие «занято».Я ожидаю получить console.log только на экземпляре Chrome Canary, а на обычном Chrome нет.
Но я получаю эти журналы в обоих браузерах. Что я делаю не так ???