Реализация long polling в node.js

long polling — один из вариантов реализации двусторонней связи с сервером.
Заключается в том, что клиент отправляет на сервер ajax запрос, а сервер держит его открытым и отвечает лишь тогда, когда наступает определенное событие. После ответа, клиент вновь делает запрос.
Таким образом у сервера есть возможность посылать данные клиенту в любой момент времени.

серверная часть

[javascript]
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);
return false;
}

var client = res;
game.on(‘game:start game:join game:player:turn:pass game:end’, function(){
this.json({update: true});//отправляем результат
game.off(null, null, this);//убираем обработчик события
}, client);
});
[/javascript]

клиентская часть:

[javascript]
function gamePolling(){
$.ajax({
url: «/game/< %=game.id%>/update»,
dataType: ‘json’,
cache: false,
success: function(data){
if (data.update == true){
window.location.reload();
}
else{
gamePolling();
}
},
error: function(data, type){
gamePolling();
}
});
}
[/javascript]

используется node.js сервер, а также фреймворк express и backbone(game — экземпляр модели backbone и с ней связан механизм событий, используемые в примере методы on(назначить обработчика), off(убрать обработчика));

Оставить комментарий