というコレクションを持つバックボーン アプリケーションがありますLinks
。Links
の REST API URI にマップされます/api/links
。
API は、ユーザーに最新のリンクを提供します。ただし、ユーザーがこの API をヒットしたときにメッセージ キューにジョブを追加し、データベース内のリンクを更新するように要求するシステムを用意しています。
この作業が完了したら、新しいリンクを Backbone コレクションにプッシュします。
どうすればいいですか?私の考えでは、次の 2 つのオプションがあります。
- バックボーン コレクションから、API をロング ポーリングして新しいリンクを探します
- ジョブが完了したときにコレクションに「メッセージ」を送信するように WebSockets をセットアップし、新しいデータを一緒に送信します。
- アプリケーションの REST API を破棄し、すべてに WebSocket を使用するだけです。後でリアルタイムのニーズが増える可能性があるためです。
REST API を使用した WebSocket
WebSocket を使用する場合、これをバックボーン コレクションに統合して REST API と連携させる最善の方法がわかりません。
現時点で、私のバックボーン コレクションは次のようになっています。
var Links = Backbone.Collection.extend({
url: '/api/links'
});
Backbone コレクションで AJAXとWebSocketを処理できるようにする方法がわかりません。CRUD Ajax 操作にデフォルトの Backbone.sync を引き続き使用し、単一の WebSocket 接続を手動で処理する必要がありますか? 私の考えでは:
var Links = Backbone.Collection.extend({
url: '/api/links',
initialize: function () {
var socket = io.connect('http://localhost');
socket.on('newLinks', addLinks)
},
addLinks: function (data) {
// Prepend `data` to the collection
};
})
質問
上記のオプションまたはその他のアイデアから、リアルタイムのニーズをどのように実装すればよいですか? コンテキストを示すためにコードの例を提供してください。