Я пытаюсь интегрировать socket.io с React.js. Я запускаю socket.io на сервере с серверной частью Express.js.
Проблема в том, что я на домашней странице, и когда заказ размещен с домашней страницы, я показываю этот заказ на странице «Заказы» React, но проблема в том, что иногда он показывает заказ, но иногда он не показывает заказ, и если я откройте несколько вкладок в разных браузерах, затем на некоторых вкладках в некоторых браузерах порядок не будет отображаться, это означает, что сокетное соединение не работает некоторое время, но во всех случаях, когда когда-либо создается ордер с домашней страницы, то происходит генерация из socket.io с домашней страницы отображается в серверной части Node.js Express.js.
Обратите внимание, что я использую модуль кластеризации в express.js
Вот как я создаю соединение socket.io.
socket = io('http://localhost:5000',{ reconnect: true ,transports: ['websocket']});
Вот компонент реагирования моей домашней страницы, откуда я размещаю заказ.
socket.emit("putKitchenOrder", Order);
Вот мой второй компонент, на котором я хочу показать заказ, который размещен в режиме реального времени, используя socket.io
componentWillUnmount(){
socket.off("kitchen-channel:orderPlacedFromPos");
}
componentDidMount() {
socket.on("kitchen-channel:orderPlacedFromPos", (order) => {
console.log('order in orderPlacedFromPos');
console.log(order);
alert('order in orderPlacedFromPos')
});
}
Вот мой код Node.js и Express.js
io.on("connection", socket => {
socket.on("putKitchenOrder", order => {
// this console.log is always showing in the node.js console window when ever a new order is placed from the homepage component but the second page is not getting the following emit "kitchen-channel:orderPlacedFromPos" sometime.
console.log('putKitchenOrder order');
io.emit("kitchen-channel:orderPlacedFromPos",order);
});
});
console.log ('putKitchenOrder order'); всегда отображается в окне консоли node.js, когда когда-либо новый заказ размещается из компонента домашней страницы, но вторая страница иногда не получает следующий сигнал "kitchen-channel: orderPlacedFromPos".