Jingle
Jabber - текстовый протокол, поэтому он лучше всего приспособлен для передачи текста, например, сообщений. Однако в некоторых случаях требуется передать бинарные данные. Текстовые протоколы плохо приспособлены к передаче бинарных данных, не исключение и Jabber. По этой причине появилась необходимость создать спецификацию по передаче бинарных данных в обход основного протокола.
Jingle - это расширение протокола Jabber, предназначенное для передачи бинарных данных. Подобно Skype, Jingle является пиринговой (P2P) сетью, это значит, что данные передаются напрямую между клиентами. Прямая передача данных значительно снижает нагрузку на сервера Jabber.
У Jingle существует множество применений, таких как:
- Передача голоса в реальном времени (аудиозвонки или просто разговор голосом, так называемый VoIP)
- Передача видео в реальном времени (видеозвонки)
- Передача файлов
Jingle поддерживают следующие клиенты:
Совместимость Jingle в различных Jabber-клиентах
На данный момент одна из основных проблем Jingle - слабая совместимость различных клиентов. Существуют несколько несовместимых спецификаций Jingle. Одна из них разработана Google для своего клиента, а вторая создана XMPP Standards Foundation. Ниже представлена таблица, в которой указана возможность совершать звонки между различными клиентами:
Вызывающая сторона | Принимающая сторона | |||||||||||||
Psi+ | Gajim | Pidgin | QIP Infium | Empathy | Maemo 5 | Spark | Google Talk | Coccinella | Talkonaut | Nimbuzz | Jitsi | Asterisk | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Psi+ | Да | Да | ?[6] | Нет | Да | ?[7] | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
Gajim | Да | Да | Да | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |
Pidgin | Да | Да | Да | Нет | Да | Да | Нет | Да | Нет | ?[8] | Нет | Нет | Да | |
QIP Infium | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | ||
Empathy | Да | Да | Да | Нет | Да | Да | Нет | Да | Нет | ?[9] | Нет | Нет | Да | |
Maemo 5 | ?[7] | Да | ?[7] | Нет | Да | Да | Да | |||||||
Spark | Нет | Нет | Нет | Нет | Нет | Нет | Нет | |||||||
Google Talk | Нет | Нет | Да | Нет | Да | Да | Нет | Да | Нет | Да | Да | |||
Coccinella | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Да[10] | ||||||
Talkonaut | Нет | Нет | ?[8] | Нет | Нет | Нет | Да | Да | ||||||
Nimbuzz | Нет | Нет | Да | Нет | ?[7] | Нет | ||||||||
Jitsi | Нет | Нет | ?[8] | Нет | Да | Нет | ||||||||
Asterisk | Нет | Нет | Да | Да | Да | Да |
Если Вы хотите попробовать работоспособность Jingle в своём клиенте, то для этого можете воспользоваться следующими ботами:
- echo@haar.student.utwente.nl - Простой тест echo
- echo@test.collabora.co.uk - Тестовый бот от Collabora с несколькими тестами, включая echo и проверку видео.
Jingle и SIP
Многим известен протокол SIP, часто применяемый для совершения голосовых звонков. Jingle во многом похож на него. В обоих протоколах используются такие технологии как STUN, TURN, ICE и RTP, кодек G.711. В то же время Jingle ушёл дальше SIP и предоставляет более качественный звук и реализует больше методов обхода NAT.
Существует также протокол SIMPLE, который добавляет в SIP поддержку общения текстом. Однако по функционалу и распространенности он не может сравниться с Jabber.
Примечание:
- ↑ Для передачи голоса и видеосигнала на Linux и Mac OS X необходимо установить плагин psimedia. Файл libgstprovider.so нужно скопировать в папку "plugins", находящуюся в месте установки Psi (в случае GNU/Linux - /usr/lib/psi/). Если Вы собираете Psimedia самостоятельно, то для сборки необходим GStreamer версии не ниже 0.10.22, а также Speex и некоторые другие библиотеки.
- ↑ Начиная с версии 0.14 появился в основной ветке. Использует farsight в качестве backend-а. В ОС Linux (Ubuntu) позволяет соединяться с ботом или другим абонентом, использующим Gajim; в том числе работает видеочат. Неизвестно, может ли работать в ОС семейства Windows.
- ↑ только для Windows, возможно для Mac OS X
- ↑ только Linux-версия
- ↑ Операционная система, предустановленная на Nokia N900. Jabber-клиент интегрирован в менеджер контактов, так что выделить его в "отдельный" клиент проблематично
- ↑ Соединение происходит и голос слышно, но клиент через время отключается по таймауту
- ↑ 7,0 7,1 7,2 7,3 Соединение происходит успешно, однако голоса не слышно
- ↑ 8,0 8,1 8,2 Соединение устанавливается, но звук только в Pidgin
- ↑ Соединение устанавливается, но звук только в Empathy
- ↑ Соединение происходит успешно, но в зависимости от версии может быть не слышно звука у вызывающей или принимающей стороны.