Как использовать backbone.js с websockets / socket-io / nowjs - PullRequest
24 голосов
/ 12 июля 2011

Я только вхожу в backbone.js и нахожу прогресс немного медленным. Моя основная проблема заключается в том, чтобы решить, как синхронизировать мои клиентские и серверные модели с помощью socket-io (технически я использую now.js, но должен применяться тот же принцип).

Я думаю, что лучший способ - переопределить метод синхронизации, но несколько простых советов будут действительно Добро пожаловать.

Ответы [ 4 ]

27 голосов
/ 13 июля 2011

Просто перезаписать Backbone.sync, чтобы он отправлял сообщения в socket.io и сообщал соответствующим моделям backbonejs на сервере об изменении состояния.

Интересная часть этого решения - настройка отношения мастер-мастер,Вам необходимо убедиться, что для любого клиента они могут только «обновлять» состояние моделей на сервере, на котором они «владеют», чтобы избежать хакеров и повреждения состояния на стороне сервера.

Таким образом, для каждого клиента они имеютнабор M, где этот клиент является хозяином всех моделей в M и имеет набор S, где этот клиент имеет подчиненных всех моделей в S.

. Он может только принудительно обновлять на сервере модели в M итолько один клиент должен иметь конкретную модель в M (или вам нужно реализовать надежную реализацию блокировки / объединения).

Всякий раз, когда модель на сервере обновляется, вы просто отправляете ее любому клиенту, у которого эта модель находится вS. (и нажмите на любого клиента, который имеет эту модель в M, если модель находится в M для нескольких клиентов).

Нужно много думать о контроле / разрешениях и владении, которые обычно обрабатываютсяКонтроллер MVC один раз клиент POST / PUT / DELETE некоторые данные.

11 голосов
/ 06 июня 2012

Проверьте backbone.iobind:. https://github.com/noveogroup/backbone.iobind

1003 * Он переопределяет Backbone.sync для вас
8 голосов
/ 17 октября 2012

Гораздо лучший подход - это управляемая событиями архитектура с использованием агрегатора событий.Отличная статья на эту тему: статья Дерика Бэйли => Отсоединение магистральных приложений от WebSockets

Это обеспечивает высокую степень разделения, упрощает тестирование и изменение библиотеки websockets, а также все этоэто не мешает переопределению внутренних функций Backbone, таких как sync ()

6 голосов
/ 20 июля 2011

Может быть, это отличное туто поможет вам: https://blog.andyet.com/2011/02/15/re-using-backbonejs-models-on-the-server-with-node

...