2012-10-01 4 views
1

Мне нужно создать сервер чата/связи для клиентов на базе Android.Чат для чата Android

андроида чата-клиентов будет подключен к интернету через 3G или Wi-Fi сеть мне нужно следующий простые функции

  • зарегистрировать новый пользователь
  • отправлять сообщения от одного клиента к другому
  • будет примерно 500 клиентов, подключенных одновременно

Начиная с разработки настольных приложений, у меня есть только решение на основе сокетов, и я полагаю, что сервером должно быть приложение на основе Java

Итак, вопрос: совместим ли подход на основе сокета или использовать какой-либо другой протокол связи.

ответ

0

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

5

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

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

Для реализации клиента XMPP на устройствах Android вы можете использовать библиотеку под названием Smack. Это на самом деле библиотека на основе Java. Я внедрил клиент чата Facebook XMPP, используя Asmack, который представляет собой порт Android от Smack. Документация Smack также применима к Asmack. Тем не менее, Asmack не обновлялся в течение двух лет, и у меня есть некоторые проблемы, и я подумываю о том, чтобы изменить мой клиент на Smack, чтобы увидеть, хорошо ли новая версия работает с Android.

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

Удачи вам!

+0

Кроме того, вы должны подумать о том, как ваше приложение использует сеть с точки зрения производительности, а также от времени работы от батареи и от того, сколько данных вашего клиента вы используете. Здесь есть некоторые статьи об этом здесь: http://developer.att.com/developer/forward.jsp?passedItemId=7200042, и вы также можете использовать инструмент ARO на Android, чтобы узнать, насколько хорошо ваше приложение делает http: // разработчик .att.com/aro –

+0

@RodBurns, Спасибо за вход! –

Смежные вопросы