Подтвердить что ты не робот

Как использовать backbone.js с websockets/socket-io/nowjs

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 3

Более подходящий подход - это управляемая событиями архитектура с использованием агрегатора событий. Отличным показателем по этому вопросу является следующий Derick Bailey article = > Отвязанные серверные приложения из WebSockets

Он отлично переносит материал, обеспечивает более легкое тестирование и изменение websockets lib, и, кроме всего прочего, он не путается с переопределением внутренних систем, таких как sync()