backbone.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
前もって感謝します