Выбор правильной реализации протокола чата

Я пытаюсь создать приложение группового чата на основе форума на Android. Мне нужно иметь возможность рисовать и отправлять голосовые сообщения через чат.

Я запутался между IRC и XMPP для использования протокола чата. Может кто-нибудь предложить мне в этом отношении.

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


person heboy    schedule 27.02.2013    source источник
comment
Не уверен, чем это отличается от чатов в XMPP. Который также поддерживает различные передачи голоса и других двоичных данных.   -  person Robin    schedule 27.02.2013


Ответы (1)


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

Вы должны позаботиться о том, чтобы выбранный домен символов кодификации не конфликтовал с вашим методом протокола для разграничения сообщений. Другой распространенной проблемой является размер протокола сообщений. Возможно, вам нужно реализовать в протоколе какой-то тип фрагментированного сообщения и некоторый MIME, описывающий двоичное содержимое.

Здесь вы можете найти список распространенных стандартов кодирования B2T.

Для рисования в режиме реального времени самым простым решением является отправка моментального снимка клиентам с текущим изображением, рисуемым в клиенте ящика. Если вы сделаете это 10 раз в секунду, вы получите анимацию рисунка со скоростью 10 кадров в секунду. Чтобы оптимизировать это, существует метод, называемый дельта-кодированием, иногда называемый дельта-сжатием. Это способ хранения или передачи данных в виде различий между последовательными данными (в данном случае изображением), а не целыми файлами. Итак, в клиенте вы видите только различия между двумя «кадрами», и единственное, что вам нужно сделать в клиенте, это «объединить» текущий «кадр» с разницей, чтобы показать следующий «кадр».

person jlvaquero    schedule 27.02.2013