PDA

Просмотр полной версии : Синхронизация клиентской модели


faraday
06.03.2015, 20:46
Здравствуйте, появилась идея попробовать использовать фоновую синхронизацию клиента и сервера в игре.
На клиенте и сервере общая игровая модель. Клиент вызывает метод сервера например addGold, сервер проверяет возможность совершения действия, и в случае успеха изменяет модель, и отправляет ответ клиенту goldAdded, дальше клиент изменяет свою модель и рассылает событие.
Идея состоит в том, чтобы синхронизировать модели в фоновом режиме Клиент отправляет так же addGold, дальше вызывается метод изменения модели, например с такой сигнатурой changeModel(target,method,value)
changeModel('player.balance.gold','+=',100);
Cервер изменяет моделm, и отправляет эту же команду на клиент. Клиент так же присваивает значение и рассылает событие. Теперь все view кто подписан слушать player.balance.gold, получают уведомления и выполняют им прtдписанные действия.
Интересно услышать какие подводные камни, и есть ли готовые решения такого подхода. Слышал что похожу штуку реализует backBone.js, но ничего не слышал про использовании на флеш. Сервер node.js, связь сокет.

bifidokk
07.03.2015, 12:27
Не совсем понял, что вы хотите? У вас есть 1 клиент, который отправляет событие на сервер, получает ответ и обновляет свои вьюхи, или у вас 10 клиентов ждут события от 1го, чтобы вдесятером обновить свои вьюхи?

faraday
07.03.2015, 13:24
Клиент 1. Который подписан на изменения своей модели с сервера, можно так сказать. Разница в том чтобы делать это прозрачно.
Но если развить идею ничего не мешает подписываться на глобальные объекты типа чата разным пользователям.
changeModel(chat.messages,'push',{msg:'hi'});
Я не думаю что в этой идее есть что-то новое, просто насколько правильно делать так.