Представьте, что я хотел бы сделать приложение, в котором пользователи могут общаться, но визуально - они будут рисовать материал на экране. Экран будет разделен пополам, и каждый участник будет рисовать что-то на своей половине, и он появится другому участнику.
Эскиз на сенсорном экране должен быть довольно простым, также предоставляя пользователю выбор цвета/кисти, ластик и т.д. Мне нужно будет записывать ввод пользователя в какие-то сообщения, каждый из которых будет описывать действие эскиза, которое потребуется для повторного воспроизведения на удаленном участнике.
Но как бы эти два пользователя обменивались данными? Я думаю о JSON + AppEngine + XMPP.
client A
в JSON и ввел их в AppEngine, чтобы их хранить. Этот подход - хранить материал на сервере - лучше, чем соединение P2P? Возможно, это приведет к значительному отставанию от телефона A- > AppEngine- > телефона B в оба конца.client B
получить сообщение? Я не могу иметь постоянного открытого подключения к AppEngine. Есть что-то о push-уведомлениях в этом вопросе. Если XMPP не работает, нужно ли было бы опросить сервер?Если вы планируете использовать App Engine, вы, вероятно, будете использовать API канала, как описано здесь.
API-интерфейс канала создает постоянное соединение между вашим приложением и серверами Google, что позволяет вашему приложению отправлять сообщения клиентам JavaScript в режиме реального времени без использования опроса. Это полезно для приложений, которые предназначены для немедленного обновления пользователя о новой информации или когда пользовательский ввод немедленно передается другим пользователям. Некоторые примеры включают совлокальные приложения, многопользовательские игры и чаты. В общем, использование Channel API - лучший выбор, чем опрос в ситуациях, когда обновления не могут быть предсказаны или написаны сценарием, например, при передаче информации между пользователями или из событий, которые не генерируются систематически.
Это очень широкий вопрос, который имеет много разных ответов. Если бы это было до меня, я бы, наверное, пошел с опросом. Вы не хотите, чтобы постоянное соединение и использование чего-то вроде Google Cloud2Device могло быть немного переборщиком для чего-то подобного. Я бы предположил, что это будет выглядеть примерно так:
Что касается конкретной технологии, это действительно зависит от вас и того, с чем вам удобно. Самым простым может быть использование центрального сервера базы данных для хранения ваших очков и создания ваших токенов сеанса.