приложение для чата: pubsubhubbub vs xmpp - PullRequest
7 голосов
/ 18 марта 2010

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

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

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

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

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

Ответы [ 5 ]

11 голосов
/ 18 марта 2010

Перейти на XMPP.

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

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

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

4 голосов
/ 18 марта 2010

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

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

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

1 голос
/ 20 июля 2010

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

0 голосов
/ 15 июля 2012

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

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

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

0 голосов
/ 21 марта 2010

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

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

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

...