У меня есть журналы на сервере и в клиентских приложениях.
Компонент генерирует событие SocketIO при нажатии. Теперь первый клиент (первое окно, открытое для страницы) щелкает компонент, и я вижу журналы на сервере о том, что событие было получено, и на клиенте, что событие было отправлено.
Теперь забавно то, что когда я дублирую вкладку, сервер регистрирует нового пользователя (соединение через сокет успешно), но когда я щелкаю компоненты, то не появляется сообщение о том, что событие было отправлено, а компонент делаетсменить цвет.
Я отправляю событие SocketIO и console.logging сообщение в обратном вызове setState.
Данный компонент является ячейкой.
Это мой код:
handleOnCellClick() {
if (!this.state.alive) {
// if dead then proceed add some color to the Cell's life :) and notify server of event
console.log("cell wasn't alive");
this.setState(
{
r: this.props.defaultRandomColorProps[0],
g: this.props.defaultRandomColorProps[1],
b: this.props.defaultRandomColorProps[2],
alive: true
},
() => {
this.props.socketProps.emit("cellChanged", {
key: [this.props.cell_row_index, this.props.cell_col_index],
color: { r: this.state.r, g: this.state.g, b: this.state.b }
});
console.log("emitted");
}
);
}
}
На самом деле, пожалуйста, убедитесь в этом сами на secret-forest-30430.herokuapp.com / . Перейдите на вкладку «Игра». Содержит «доску» компонентов Cell.
Снова я должен повторить, что все это работает локально. Вот ссылка на проект на github: https://github.com/Dobermensch/ExpressTest.git
Есть идеи, что происходит?
TL; DR : обратный вызов setState не работает?
РЕДАКТИРОВАТЬ : для шага назад я пытаюсь создать многопользовательскую игру жизни Конвея