我已经在互联网上搜索了几天,以找到在backbone.js中拥有实时收藏的优化解决方案。想到一个虚拟的房间(例如聊天室),我想显示谁在那个房间里。现在我每2秒获取一次集合,并向列表视图中添加新用户(在我的例子中为玩家),并且它正在工作,但我担心流量以及所有无用的ajax请求都不会返回任何内容。如何在backbone.js中轮询集合时防止无用的ajax请求?
这里是我的支柱脚本:
App.players = new App.Collections.Players;
waitingUserList = new App.Views.WaitingPlayers({ collection: App.players });
setInterval(function() {
App.players.fetch({
success: function(collection) {
collection.each(function(player) {
if (player.get('added') == 0) {
player.set('added', 1);
player.save();
}
});
},
});
}, 2000);
$('div.waiting-list').append(waitingUserList.el);
和我的PHP代码(我使用laravel 3):
public function get_index($gid)
{
$players = Game::find($gid)->players()->get();
if (!empty($players)) {
return Response::eloquent($players);
} else {
return false;
}
}
有什么办法,当叫collection.fetch()
,它等到一些新的记录添加到数据库中,然后服务器响应ajax请求。
P.S.我不想用html5 websockets
P.S.S.这是我的第一个骨干的经验,所以请原谅我,如果我一直在某处错误的或说一些愚蠢的事情:d
在此先感谢
您不必使用网络套接字。像socket.io和signalR这样的库处理插座不可用时丢弃到xhr longpolling。 –
http://forums.laravel.io/viewtopic.php?id=5717 –
@CoryDanielson感谢您的链接 – Behzadsh