Подтвердить что ты не робот

Есть ли библиотека XMPP с открытым исходным кодом (JavaScript)?

Кто-нибудь написал библиотеку XMPP с открытым исходным кодом, которая использует WebSockets и предназначена для запуска браузером?

4b9b3361

Ответ 1

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

Первым шагом является завершение стандартизации WebSocket. Похоже, это может произойти в рабочей группе IETF HyBi, которая на момент написания еще не была одобрена IESG. Несколько месяцев назад на встрече в Хиросиме IETF появился HyBi Birds of the-Feather (BoF) (см. Материалы встречи ), который прошел довольно хорошо.

После того, как WebSockets имеет стабильную ссылку и, похоже, будет оседать, XSF создаст XEP, который связывает XMPP с WebSockets, предположительно, с помощью строфы для каждого фрейма WebSocket.

Редактировать: Джек Моффитт написал IETF Internet-Draft с первым проходом по протоколу, который можно использовать. Внимание. Это, по-прежнему, может сильно измениться. Только реализуйте его, если вы захотите полностью вырвать его позже. Внимание.

Ответ 2

Существует несколько решений (ни один из них не идеален)

1. Используйте Kaazing.

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

2. Объединение js.io и APE (Ajax Push Engine)

APE - это среда Comet, но недавно они начали поддерживать Websockets. На своем веб-сайте (раздел "APE as proxy" ) они говорят, что могут запускать библиотеки js.io, которые включают xmpp.js, поэтому их объединение может работать.

3. Использовать Caucho

Это основанная на Java структура, похожая на APE, которая обеспечивает одноразовое решение Comet и, похоже, поддерживает как XMPP, так и WebSockets

4. Попросите команду Strophe поддерживать WebSocket.

Strophe делает XMPP через BOSH (двунаправленные потоки через синхронный HTTP), но есть обсуждение поддержки WebSockets.

Джек Моффитт (основной разработчик и автор книги, упомянутой выше), похоже, заинтересован в WebSockets, но нам нужно предоставить более веские аргументы в пользу того, почему они должны поддерживать WebSocket через BOSH. Если у вас есть хорошие ответы, присоединитесь к протектору.

Я просто попробовал их xmpp, bosh, strophe echobot example, который работал красиво. Вы также можете попробовать, чтобы узнать, соответствует ли оно вашему требованию или нет.

Для # 2 и # 3 они говорят, что они поддерживают xmpp и websockets, но не уверены, что они работают вместе.

Какое приложение вы используете для использования XMPP и WebSockets?

Ниже приведены предложения по альтернативам.

  • Если вы хотите присутствовать, общаться в чате, эквивалентную функциональность, вы можете сделать Wave Gadget или Robot, а затем открыть снаружи, используя Wave Embed API (мертвая ссылка, хранящаяся в исторических целях). Волна фактически построена поверх XMPP.
  • Если вы просто ищете возможность обмена сообщениями с очень низкой задержкой, вы можете попробовать AMQP.
  • Если вы ищете гораздо более простое потоковое сообщение, вы можете просто вставить/удалить unix файл, как я показал здесь.

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

Ответ 3

Вскоре появится книга, которая охватывает эту тему...

Профессиональный XMPP с JavaScript и jQuery alt text http://ecx.images-amazon.com/images/I/51B7VAHw8OL._SL500_AA240_.jpg

Но я предполагаю, что вы не хотите ждать книги. Поэтому смотрите презентацию Джека Моффита из JSConf. Я наблюдал это сегодня утром. (Джек Моффитт является автором книги, связанной с выше).

Используемая библиотека (реализация JavaScript и C) Strophe.

Это очень плодотворная область исследований, но очень сырая. Мы скоро увидим. WebSockets поставляется с HTML5, верно?

Ответ 4

JSJaC реализует XMPP Over Websockets. Известно, что он работает с несколькими реализациями:

  • node -xmpp-bosh - поддерживает RFC6455 и без проблем работает с 0.6.1, это также прозрачно использует STARTTLS при необходимости
  • wxg - поддерживает RFC6455 и работает без проблем, но не может подключаться к серверам, требующим STARTTLS (оригинал wxg имеет некоторые вопросы, которые были исправлены Гордином).
  • ejabberd-websockets - не поддержка RFC6455, следовательно, она не работает, адаптируя ее для поддержки RFC6455 должен быть достаточно прост для всех, кто знает Erlang (некоторые работы в процессе работы можно найти на github)
  • Openfire - доступен неофициальный плагин, но ему не хватает поддержки для RFC6455, следовательно, он не работает.
  • Apache Vysper - делает не поддерживает RFC6455, следовательно, не работает.
  • Tigase - не известна работа над WebSocket поддержка
  • MongooseIM - вилка ejabberd с поддержкой XMPP через Websockets.

Ответ 5

Я не уверен, почему вы спрашиваете конкретно о решении WebSocket, потому что XMPP-серверу придется поддерживать это в первую очередь.

Однако есть несколько доступных JavaScript-библиотек XMPP (насколько я вижу, все они используют метод BOSH):

Эти примеры были взяты из XMPP Website, в котором перечислены версии с открытым исходным кодом протокола XMPP.

Ответ 6

Я не уверен, что JS на стороне браузера может обрабатывать только протокол websocket, поскольку он в основном полагается на API-интерфейс браузера. Несколько веб-узлов поддержки браузера еще: Chrome, Safari5, возможно, Firefox4. Существует много обходных решений, основанных на flash/as3 (тогда ваш js связывается с флэш-кодом), основное ограничение в том, что флэш-память не поддерживает безопасное соединение (слишком плохо).

BWT, вы можете проверить этот websocket implem, они предоставляют открытую клиентскую библиотеку Java websocket и, похоже, имеют дело с материалами xmpp, и если вы просматриваете репозитории вы можете найти базовую реализацию as3 websocket.