Пытаюсь реализовать long polling в node js. Оно работает, но криво. Проблема в том большая часть polling запросов не получают ответа от сервера. Уже голову сломал, почему не работает.
Идея такая:
На события игры вешаются прослушиватели, к коллбэку прослушивателя биндится res-объект.
Браузер держит открытым запрос, пока не получит ответ, game должен хранить прослушивателей с Res этих запросов до тех пор, пока не получит сигнал события, и не отработает callback.
Но стабильно случается такая штука: аякс запрос в браузере висит, событие прошло, но браузер не получил ответа.
game — экземпляр backbone model
Буду очень благодарен за помощь.
app.all('/game/:game_id/update', function(req, res){
var gameId = req.param('game_id');
var game = games.get(gameId);
if (!game){
res.send('No game', 404);
}
var client = res;
game.on('game:endTurn game:start game:startTurn', function(){
this.json({update: true});
game.off(null, null, this);
}, client);
// //через 60 секунд сбросить
// setTimeout(function(){
// game.off(null, null, this);
// }, 60000)
});