web-dev-qa-db-ja.com

websockets / socket-io / nowjsでbackbone.jsを使用する方法

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

最良の方法はsyncメソッドをオーバーライドすることだと思いますが、いくつかの簡単なアドバイスは本当に歓迎です。

24
henry.oswald

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

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

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

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

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

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

27
Raynos

バックボーン.iobindをチェックしてください: https://github.com/noveogroup/backbone.iobind

Backbone.syncを上書きします。

11
Evan Moran

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

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

8
zappan

たぶん、この優れたtutoがあなたを助けるでしょう: https://blog.andyet.com/2011/02/15/re-using-backbonejs-models-on-the-server-with-node

6
Samber Valley