24

私は backbone.js に入ったばかりで、進行が少し遅いと感じています。私の主な問題は、socket-io を使用してクライアント側とサーバー側のモデルを同期させる方法を考え出すことです (技術的には now.js を使用していますが、同じプリンシパルが適用されるはずです)。

最良の方法は sync メソッドをオーバーライドすることだと思いますが、簡単なアドバイスをいただければ幸いです。

4

4 に答える 4

26

単に上書きBackbone.syncして、socket.ioにメッセージを送信し、サーバー上の関連するbackbonejsモデルに状態を変更するように指示します。

このソリューションの興味深い部分は、マスターとマスターの関係を設定することです。ハッカーやサーバー側の状態の破損を回避するために、クライアントが「所有権」を持つサーバー上のモデルの状態のみを「更新」できることを保証する必要があります。

したがって、クライアントごとに、そのクライアントがMのすべてのモデルのマスターであるセットMと、そのクライアントがSのすべてのモデルのスレーブを持つセットSがあります。

Mのモデルのサーバーでのみ強制的に更新でき、1つのクライアントのみがMの特定のモデルを持つ必要があります(または、確実なロック/マージの実装を実装する必要があります)。

サーバー上のモデルが更新されるたびに、Sにそのモデルがあるクライアントにプッシュするだけです(複数のクライアントのモデルがMにある場合は、Mにそのモデルがあるクライアントにプッシュします)。

クライアントがデータをPOST/PUT / DELETEすると、通常はMVCコントローラーによって処理される制御/アクセス許可と所有権について多くの考慮が必要です。

于 2011-07-13T00:35:02.840 に答える
11

backbone.iobind を確認してください: https://github.com/noveogroup/backbone.iobind

それはあなたのために上書きBackbone.syncします。

于 2012-06-06T19:55:49.857 に答える
8

はるかに優れたアプローチは、イベントアグリゲーターを使用したイベント駆動型アーキテクチャです。このテーマに関する素晴らしい読み物は、次のDerickBaileyの記事です=> WebSocketからバックボーンアプリを切り離す

ものを高度に分離し、WebSocket libのテストと変更を容易にし、さらに、sync()のようなBackboneの内部をオーバーライドすることを台無しにしません。

于 2012-10-17T16:16:01.487 に答える
6

たぶん、この優れたチュートリアルが役に立ちます: https://blog.andyet.com/2011/02/15/re-using-backbonejs-models-on-the-server-with-node

于 2011-07-20T10:08:15.777 に答える