【发布时间】:2013-04-08 01:15:12
【问题描述】:
我已经在互联网上搜索了好几天,以找到一个优化的解决方案,用于在主干.js 中进行实时集合。想想一个虚拟房间(例如聊天室),我想显示那个房间里的人。现在我每 2 秒获取一次集合并将新用户(在我的情况下为播放器)添加到列表视图中,它正在工作,但我担心流量和所有那些无用的 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请求。
PS我不想使用html5 websockets
PSS这是我的第一次骨干体验,如果我在某个地方弄错了,请原谅我说了些傻话:D
提前致谢
【问题讨论】:
-
您不必使用 websockets。当套接字不可用时,socket.io 和 signalR 等库会处理掉到 xhr 长轮询。
-
@CoryDanielson 感谢您的链接
标签: php ajax backbone.js laravel backbone.js-collections