Вопрос

Я не уверен, какой стек лучше всего подходит для создания приложения для чата.Сейчас я рассматриваю два основных варианта:

  • фейсбук торнадо
    • минусы:использует не основной протокол чата xmpp, а pubsubhubbub
    • плюсы:мне очень нравится его простота разработки (веб-сервер + веб-фреймворк);pubsubhubbub также кажется более простым протоколом, чем xmpp;и я знаю питон
  • xmpp + bosch, пенджаб, еджабберд
    • минусы:не знаю эрланга;в целом, кажется, немного сложнее разрабатывать
    • плюсы:использует протокол xmpp

Приложение чата должно иметь следующее:

  • Личные сообщения
  • Общественные помещения
  • Отдельные комнаты
  • История чатов для комнат (не навсегда, только последние n сообщений)
  • HTML-встраивание
  • ссылка на чат

Оба варианта кажутся масштабируемыми, так что меня это не беспокоит (мы также думаем запустить приложение в ec2 от Amazon).Я знаю, что есть проект по созданию сервера xmpp с использованием Tornado, но он еще не готов к использованию в производстве, а сроки у нас не такие уж большие.По сути, меня больше всего беспокоит простота разработки, а не сожаление о том, что позже я использовал pubsubhubbub для разработки приложения для чата, но я где-то читал, что PubSubHubbub может в конечном итоге заменить XMPP, поскольку REST заменил SOAP — и что вы думаете?

Это было полезно?

Решение

Перейти на XMPP.

«Из коробки» ejabberd поддерживает все ваши требования.Вам не нужно будет видеть какой-либо эрланг и писать собственные модули для ejabberd.А со Strofejs XMPP в браузере (что вы, видимо, и делаете) великолепен.

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

И вы разрабатываете приложение для чата, для которого и был создан XMPP.

Другие советы

Facebook Tornao вообще не использует PubSubHubbub!

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

Нет необходимости использовать Punjab, модуль ejabbed http-bind теперь отлично справляется со своей задачей.Кроме того, вам не нужно изучать Erlang, точно так же, как вам не нужно изучать C при написании веб-приложения, использующего Apache :) Посмотрите такие вещи, как Аристошат.Единственное, с чем вам нужно будет поиграться, — это настройка вашего XMPP-сервера и чатов, а затем Javascript для клиентской стороны (в браузере).

Если вам не нужна федерация через XMPP, но вы хотите быстро создать прототип и развернуть его, а также обеспечить масштабируемость, взгляните на пример веб-платформы Lift. чат-сервер на одной странице кода.

PubSubHubbub(PuSH) никогда не предназначался для приложений чата.Его иногда называют «IM для Интернета».Я предлагаю вам просмотреть этот слайд: Realtime Ruby для Интернета в реальном времени от igrigorik

Вопрос на самом деле в том, какой реальный срок вы хотите получить?Если вам нужна скорость, то XMPP — лучший вариант (500 мс), тогда как PuSH зависит от вашего канала и способа его ретрансляции.Помните, что при использовании PuSH требуется в общей сложности 4 сетевых перехода, прежде чем контент достигнет подписчика.

Еще большая проблема заключается в том, что PuSH полагается на HTTP Post.Даже если вы в конечном итоге создадите приложение для чата на основе PuSH и, скажем, на более позднем этапе захотите сделать его доступным для других устройств или даже в качестве настольного приложения, вам придется ретранслировать тот же контент с помощью XMPP.Еще одна вещь, в которой вы проиграете, — это то, что пользователям вашего чат-приложения будет очень сложно войти в систему из любого другого чата по их выбору.

Вы можете использовать REST API с WebSocket для реализации архитектуры издатель/подписчик.

Атмосфера и чванливые розетки это хорошая Java-инфраструктура, которую вы можете подключить к своему Джерси REST API и добиться этого.

В блоге создателя Atmospehre jfarcand есть один пример приложения для чата построенный по этим технологиям.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top