私は backbone.js に入ったばかりで、進行が少し遅いと感じています。私の主な問題は、socket-io を使用してクライアント側とサーバー側のモデルを同期させる方法を考え出すことです (技術的には now.js を使用していますが、同じプリンシパルが適用されるはずです)。
最良の方法は sync メソッドをオーバーライドすることだと思いますが、簡単なアドバイスをいただければ幸いです。
私は backbone.js に入ったばかりで、進行が少し遅いと感じています。私の主な問題は、socket-io を使用してクライアント側とサーバー側のモデルを同期させる方法を考え出すことです (技術的には now.js を使用していますが、同じプリンシパルが適用されるはずです)。
最良の方法は sync メソッドをオーバーライドすることだと思いますが、簡単なアドバイスをいただければ幸いです。
単に上書きBackbone.sync
して、socket.ioにメッセージを送信し、サーバー上の関連するbackbonejsモデルに状態を変更するように指示します。
このソリューションの興味深い部分は、マスターとマスターの関係を設定することです。ハッカーやサーバー側の状態の破損を回避するために、クライアントが「所有権」を持つサーバー上のモデルの状態のみを「更新」できることを保証する必要があります。
したがって、クライアントごとに、そのクライアントがMのすべてのモデルのマスターであるセットMと、そのクライアントがSのすべてのモデルのスレーブを持つセットSがあります。
Mのモデルのサーバーでのみ強制的に更新でき、1つのクライアントのみがMの特定のモデルを持つ必要があります(または、確実なロック/マージの実装を実装する必要があります)。
サーバー上のモデルが更新されるたびに、Sにそのモデルがあるクライアントにプッシュするだけです(複数のクライアントのモデルがMにある場合は、Mにそのモデルがあるクライアントにプッシュします)。
クライアントがデータをPOST/PUT / DELETEすると、通常はMVCコントローラーによって処理される制御/アクセス許可と所有権について多くの考慮が必要です。
backbone.iobind を確認してください: https://github.com/noveogroup/backbone.iobind
それはあなたのために上書きBackbone.sync
します。
はるかに優れたアプローチは、イベントアグリゲーターを使用したイベント駆動型アーキテクチャです。このテーマに関する素晴らしい読み物は、次のDerickBaileyの記事です=> WebSocketからバックボーンアプリを切り離す
ものを高度に分離し、WebSocket libのテストと変更を容易にし、さらに、sync()のようなBackboneの内部をオーバーライドすることを台無しにしません。
たぶん、この優れたチュートリアルが役に立ちます: https://blog.andyet.com/2011/02/15/re-using-backbonejs-models-on-the-server-with-node