Начал изучать реакт (поэтому в хуках пока не разбираюсь). В общем, такая ошибка. Хочу сделать крестики нолики через long polling.
Компонента с игрой:
function Game(props) {
useEffect(() => {
getField()
}, [])
const getField = () => {
console.log('get');
axios.get('http://localhost:3001/game-get')
.then(response => {
props.setNewField(response.data.field)
props.updateStatus(response.data.status)
getField()
})
.catch(err => {
console.log(err);
})
}
const updateField = (event) => {
console.log('update');
if (event.target.id.match('^c[0-9]$')) {
axios.post('http://localhost:3001/game-post', { id: event.target.id })
}
}
return (
<div className={classes.wrapper}>
<a href="/" className={classes.goBack}>Go to the menu</a>
<div className={classes.status}>{props.status}</div>
<div className={classes.shield} onClick={updateField}>
Сервер на express.js:
const server = express()
const PORT = process.env.PORT || 3001
server.use(cors())
server.use(express.json())
const emitter = new events.EventEmitter()
server.listen(PORT, () => console.log('Server is working at ' + PORT + ' port'))
//Обработка get-запроса
server.get('/game-get', (req, res) => {
emitter.once('changing', game => {
res.json(game)
})
})
//Обработка Post-запроса
server.post('/game-post', (req, res) => {
emitter.emit('changing', gameHndlr(req.body.id))
}); // gameHndlr - обработчик логики игры<img
Параметры сети:
src="
https://habrastorage.org/webt/63/2c/8a/632c8a806ac..." alt="image"/>
Получается после каждого post-запроса у меня появляется еще один "висящий"
У меня скоро кукуха поедет, как это исправить??