Существует ли библиотека XMPP WebSockets (JavaScript) с открытым исходным кодом?[закрыто]

StackOverflow https://stackoverflow.com/questions/1850162

  •  13-09-2019
  •  | 
  •  

Вопрос

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

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

Решение

У нас пока нет стандарта для XMPP. Вебсокеты которые могут реализовать серверы, и это потребуется для того, чтобы клиентская сторона могла быть адекватно решена.

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

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

Редактировать:Джек Моффитт написал IETF Интернет-Черновик с первым проходом по протоколу, который можно использовать. ПРЕДУПРЕЖДЕНИЕ.Вероятно, ситуация еще радикально изменится.Реализуйте его только в том случае, если позже вы готовы полностью его вырвать. ПРЕДУПРЕЖДЕНИЕ.

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

Есть несколько решений (ни одно из них не идеально).

1.Используйте Каазинг.

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

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

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

3.Используйте Каучо

Это платформа на основе Java, похожая на APE, которая предоставляет универсальное решение Comet, и они, похоже, поддерживают как XMPP, так и WebSockets.

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

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

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

Я только что попробовал их Пример эхобота xmpp,bosh,strophe, что сработало хорошо.Вы также можете попробовать его, чтобы увидеть, соответствует ли он вашим требованиям или нет.

Что касается № 2 и № 3, они говорят, что они оба поддерживают xmpp и веб-сокеты, но не уверены, работают ли они вместе.

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

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

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

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

Скоро выйдет книга на эту тему...

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

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

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

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

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

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

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

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

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

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

Эти примеры были взяты из Веб-сайт XMPP в котором перечислены реализации протокола XMPP с открытым исходным кодом.

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