Что мне нужно знать перед началом работы с приложением для обмена мгновенными сообщениями? - PullRequest
0 голосов
/ 25 мая 2010

Я изучаю создание приложения IM-типа с использованием стека Java (по крайней мере, для сервера). Мне было бы интересно узнать любую информацию / совет о том, как работают такие приложения, как Skype / AIM / MSN, а также узнать о любых технологиях / API, которые могут иметь отношение к делу. Не отказываясь от самой идеи, она, возможно, больше похожа на Google Wave, чем на Skype, но информация, полезная для обоих, очень приветствуется.

Конкретные моменты, о которых я уже подумал, включают:

  • Сервер против P2P ... по причинам, связанным с регистрацией, моей системе потребуется, чтобы все взаимодействие проходило через центральный сервер. Это то, как работают другие IM-инструменты ... особенно, когда аудио / видео входит в уравнение?
  • Перекрестная связь с другими системами. Существуют ли API-интерфейсы для этого или все провайдеры мгновенных сообщений прилагают все усилия, чтобы сохранить свой протокол в секрете? Природа того, что я разрабатываю, означает, что интеграция может быть только ограниченной, но она определенно кажется целесообразной с точки зрения бизнеса

Ответы [ 3 ]

3 голосов
/ 25 мая 2010

Познакомьтесь XMPP . Существует множество библиотек Java, и большинство основных клиентов IM поддерживают XMPP.

1 голос
/ 23 ноября 2010

Как уже упоминалось, используйте XMPP (что означает расширяемый протокол обмена сообщениями и присутствия). Вероятно, вы можете уйти, используя существующий сервер XMPP (например, Openfire, ejabberd и т. Д.), Не программируя его самостоятельно. Существует что-то под названием libpurple для подключения с использованием проприетарных протоколов IM.

Для того, чтобы делать вещи, которые не поддерживает стандарт XMPP, вы можете посмотреть на клиентских ботов или компоненты внешнего сервера .

0 голосов
/ 14 октября 2016

Существует два способа создания мобильного приложения для обмена сообщениями: разработка функций чата:

  • Собственные решения с нуля
  • Интеграция с решениями SDK для мобильных сообщений.

Вот статья о приблизительной разбивке сметных затрат на разработку, Сколько стоит разработка WhatsApp? Это сводится к минимальной первоначальной фиксированной стоимости в 260 000 долларов на разработку в течение 3 месяцев с участием около 6 инженеров и менеджера по продукту. в таких местах, как Силиконовая долина или Нью-Йорк, чтобы создавать базовые функции мобильного чата с нуля. Не говоря уже о стоимости эксплуатации серверов, обслуживании, масштабируемости и расширении возможностей в будущем. Альтернативная стоимость затрат долларов и времени на создание функций чата - это ресурсы, которые нельзя выделить на ваши основные функции (если вы не создаете другой WhatsApp или Facebook Messenger).

Если ваш план не состоит в том, чтобы изобретать велосипед, или вы экономите инженерные ресурсы и привлекаете экспертов для более эффективного использования, или просто тестируете воду с помощью функций чата, то зачастую проще и экономически выгоднее интегрировать стороннюю или решения с открытым исходным кодом напрямую. Они часто предоставляют готовую к использованию настраиваемую библиотеку пользовательского интерфейса, кроссплатформенные SDK, бэкэнд-API, интеграцию с веб-крюками и т. Д. Та же идея, что и при использовании Google Analytics, Parse / Firebase , Crashlytics, AFNetworking, API Facebook, Socket.io , Stripe , Twilio для SMS, Hyphenate.io и т. Д. Многие компании изначально решают создавать собственные решения для чата, но позже понимают, что их решения не масштабируются, как ожидалось, так как клиентская база быстро растет.

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

  • Экономическая эффективность : ROI собственных решений? Добиться экономии на масштабе? Строительство инженерной инфраструктуры стоит очень дорого, с учетом первоначальных фиксированных затрат на разработку, эксплуатационных расходов, обслуживания, расширения функций и т. Д.
  • Масштабируемость : низкая задержка, горизонтальное масштабирование, вертикальное масштабирование, масштабирование без простоев, общая производительность и т. Д.
  • Надежность : стабильность, надежность, время простоя, гарантия доставки сообщений, отсутствие потери сообщений и посылок и т. Д.
  • Мобильное клиентское устройство: время автономной работы устройства, использование сотовых данных, единичное и медленное интернет-соединение,
  • Владение : Собственная структура цен по сравнению с многоуровневой и лицензирование с частным развертыванием и хостингом
  • Безопасность : шифрование, аутентификация, конфиденциальность
  • Переносимость : Поддержка на разных платформах. то есть для мобильных устройств (Android, iOS), настольных компьютеров (macOS, Windows) и различных веб-браузеров.
  • Функции : чат один на один, групповой чат, большие объемы и одновременные разговоры, вход на несколько устройств, обмен файлами, обмен и воспроизведение аудиофайлов, видео / голосовые вызовы и т. Д.
  • Технологии : существует множество стандартизированных технологий, таких как XMPP , MQTT , длинный HTTP-опрос, Socket.io и т. д. Большинство систем обмена сообщениями строят собственные решения на стандартных протоколах, например, Facebook Messenger основан на MQTT . Многие сторонние поставщики уже предоставляют отличные решения API и SDK для облегчения головной боли разработчиков, такие как Hyphenate.io.
  • Людские ресурсы : Можете ли вы найти инженеров с опытом, чтобы выполнить все вышеперечисленные требования? Еще одна вещь, чтобы рассмотреть это рвозможность включения модных чат-ботов, анализа больших данных (особенно обслуживания клиентов), шифрования и т. д. Проверьте, способны ли сторонние SDK, открытый исходный код или ваша инженерная группа предоставить эти гибкие возможности или макет потенциальной взлетно-посадочной полосы. Некоторые поставщики мобильных решений для обмена сообщениями, такие как Hyphenate.io , имеют богатый набор функций чата и большую гибкость для расширения, готовые для вас.

Наконец, ответы на ваши мысли,

  1. Сервер против P2P ... по причинам, связанным с регистрацией, моей системе потребуется, чтобы все взаимодействие проходило через центральный сервер. Это то, как работают другие инструменты обмена мгновенными сообщениями ... особенно, когда аудио / видео входит в уравнение?

Гифенат обрабатывает связь или доставку сообщений для вас, а также устанавливает видео / голосовые вызовы.

  1. Перекрестная связь с другими системами. Существуют ли API-интерфейсы для этого или все провайдеры мгновенных сообщений прилагают все усилия, чтобы сохранить свой протокол в секрете? Природа того, что я разрабатываю, означает, что интеграция может быть только ограниченной, но она определенно кажется целесообразной с точки зрения бизнеса

** С точки зрения безопасности связи, есть 3 основных компонента, которые вы можете рассмотреть в TLS / SSL для безопасности транспортного уровня, OAuth 2.0 для аутентификации и сквозного шифрования. **

...