Задать вопрос

Long polling с node.js(express)?

Пытаюсь реализовать 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)
});
  • Вопрос задан
  • 8183 просмотра
Подписаться 6 Оценить Комментировать
Ответ пользователя Виталий Желтяков К ответам на вопрос (4)
Проверьте поведение сессий, возможно это оно.
Ответ написан
Комментировать