В моем приложении реакции я установил соединение с определенной c комнатой на основе параметра roomId:
componentDidMount() {
const roomId = window.location.search.replace('?roomId=', '');
this.setState({ roomId });
this.socket = io();
if (!this.socket.socket) {
this.socket.connect();
}
this.socket.on('connect', () => {
console.log(this.state.roomId);
this.socket.emit('room', this.state.roomId);
});
this.socket.on('message', this.handleMessage)
}
Теперь на моем сервере. js Я присоединяюсь и слушаю сообщения, подобные this:
io.on('connection', socket => {
socket.on('room', function(room) {
socket.join(room);
});
socket.on('message', function(data) {
socket.to(data.roomId).emit(data);
});
});
Но когда я отправляю сообщение, другое окно браузера, подключенное к той же самой комнате, не получает никаких сообщений:
const message = {
roomId: this.state.roomId,
value: this.state.field,
};
this.socket.emit('message', message);
Я слушаю сообщения, подобные этому: this.socket.on('message', this.handleMessage)
, где handleMessage просто устанавливает состояние с новым сообщением.
Может кто-нибудь увидеть, почему нет?
ОБНОВЛЕНИЕ: Вот еще код, чтобы увидеть: https://jsbin.com/pakeyavefo/edit?html, js, выход