Как бы я обменивался чатом / набросками в реальном времени на Android? - PullRequest
1 голос
/ 28 декабря 2010

Представьте себе, что я хотел бы создать приложение, в котором пользователи могут общаться в чате, но визуально - они будут рисовать вещи на экране.Экран будет разделен пополам, и каждый участник будет рисовать что-то на своей половине, и это будет казаться другому участнику.

Рисование на сенсорном экране должно быть довольно простым, также предоставляя пользователю цвет / кистьвыделение, ластик и т. д. Мне нужно было бы фиксировать ввод пользователя в какое-то сообщение, каждое из которых описывало бы действие эскиза, которое необходимо было бы воспроизвести на удаленном участнике.

Но как быэти два пользователя общаются? Я думаю о JSON + AppEngine + XMPP .

  • Я бы сериализовал действия скетча из client A в JSON и поместил их в AppEngine, где они будут сохранены.Этот подход - хранить вещи на сервере - лучше, чем P2P-соединение?Возможно, это добавит существенную задержку из-за телефонного A-> AppEngine-> телефонного B-туда и обратно
  • Как client B получит сообщение?У меня не может быть постоянного открытого соединения с AppEngine.Что-то в push-уведомлениях есть в этом вопросе .Если XMPP не работает, нужно ли опрашивать сервер?

Ответы [ 2 ]

2 голосов
/ 28 декабря 2010

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

  • Клиент A и Клиент B устанавливают соединение друг с другом. Они оба получают токен сеанса.
  • Клиент А рисует что-то на экране. Нарисованные точки отправляются на центральный сервер и сохраняются вместе с токеном сеанса.
  • Клиент B опрашивает центральный сервер на наличие новых точек, передавая свой токен сеанса.
  • Полученные очки отображаются на экране Клиента Б.
  • Предыдущие сохраненные точки удаляются.
  • Повтор.

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

1 голос
/ 01 января 2011

Если вы планируете использовать App Engine, вы, вероятно, будете использовать Channel API, как описано здесь .

Channel API создает постоянное соединение между вашим приложением и серверами Google, позволяя вашему приложению отправлять сообщения клиентам JavaScript в режиме реального времени без использования опроса. Это полезно для приложений, которые предназначены для немедленного обновления пользователя о новой информации или когда пользовательский ввод немедленно передается другим пользователям. Некоторые примеры включают приложения для совместной работы, многопользовательские игры и чаты. В целом, использование Channel API является лучшим выбором, чем опрос в ситуациях, когда обновления не могут быть спрогнозированы или составлены по сценарию, например, при передаче информации между пользователями или событиями, которые не генерируются систематически.

...