Я изучаю ReactJS, Express и socket.io, создавая небольшое приложение, в котором пользователи могут вступать в комнаты и взаимодействовать друг с другом внутри комнаты (контент NYI). В настоящее время идея состоит в том, чтобы иметь представление RoomList и индивидуальный вид в комнате. Количество пользователей в комнате должно быть видимым в RoomList (например, Room 1: 2 users
).ReactJS, реактивный маршрутизатор и socket.io
Мой маршрутизатор конфигурации выглядит следующим образом:
<Router history={hashHistory}>
<Route path="/" component={App}>
<Route path="rooms" component={RoomList}></Route>
<Route path="rooms/:roomId" component={Room}></Route>
</Route>
</Router>
И компонент App:
export default React.createClass({
componentDidMount() {
var socket = io.connect('/')
socket.on('connect', function(data) {
socket.emit('message', "Dududu")
socket.on('message', function(data) {
console.log("Message:", data);
})
})
},
render() {
return (
<div>
{this.props.children}
</div>
)
}
})
Проблема в том, как я могу получить доступ к экземпляру сокет, созданный здесь в другом компоненте? Например, я хотел бы добавить события сокета для присоединения/выхода из комнаты и других событий, связанных с комнатой в компоненте «Комната», обновления счетчика RoomList в компоненте RoomList и т. Д. Как я могу совместно использовать объект сокета глобально или что является рекомендуемой практикой для работы с сокетами и несколькими компонентами?