Jabber - текстовый протокол, поэтому он лучше всего приспособлен для передачи текста, например, сообщений. Однако в некоторых случаях требуется передать бинарные данные. Текстовые протоколы плохо приспособлены к передаче бинарных данных, не исключение и Jabber. По этой причине появилась необходимость создать спецификацию по передаче бинарных данных в обход основного протокола.

Логотип Jingle

Jingle - это расширение протокола Jabber, предназначенное для передачи бинарных данных. Подобно Skype, Jingle является пиринговой (P2P) сетью, это значит что данные передаются напрямую между клиентами. Прямая передача данных значительно снижает нагрузку на сервера Jabber.

У Jingle существует множество применений, таких как:

  • Передача голоса в реальном времени (аудиозвонки или просто разговор голосом, так называемый VoIP)
  • Передача видео в реальном времени (видеозвонки)
  • Передача файлов

Jingle поддерживают следующие клиенты:

  • Psi [1]
  • Jabbin
  • Empathy
  • Jabbim (только передача файлов, в тестировании)
  • Kopete (в версиях для KDE 3.5, а также для KDE 4.2 и выше)
  • Spark (только для Windows, возможно для Mac OS X)
  • Coccinella
  • Google Talk
  • Nimbuzz
  • Talkonaut
  • Pidgin (только Linux-версия)
  • QIP Infium
  • Maemo 5 (Операционная система, предустановленная на Nokia N900. Jabber-клиент интегрирован в менеджер контактов, так что выделить его в "отдельный" клиент проблематично)

Совместимость Jingle в различных Jabber-клиентах

Существуют несколько различных несовместимых спецификаций Jingle. Одна из них разработана Google для своего клиента, а вторая создана XMPP Standards Foundation. Кроме того, по причинам слабой протестированности различных реализаций Jingle возможны проблемы совместимости. Ниже представлена таблица, в которой указана возможность совершать аудиовызовы между различными клиентами:

Вызывающая сторона Принимающая сторона
Psi+ Gajim Pidgin QIP Infium Empathy Maemo 5 Kopete Spark Google Talk Coccinella Talkonaut Nimbuzz
Psi+ Да Нет ?[2] Нет Да Да[3] Нет
Gajim Нет ? Да[3] Нет Да ?[4] Нет
Pidgin Да Да[3] Да Да Да[3] Да Нет
QIP Infium Нет Нет Да ? Да ?
Empathy Нет Да Да[3] Да ? ?[4]
Maemo 5 Да[3] Да Да[3] ? ?[4] Да
Kopete
Spark
Google Talk Да
Coccinella Нет Нет Нет
Talkonaut
Nimbuzz
ToDo: Во время испытаний произошел глюк, в результате не было слышно голоса, из-за чего необходимо часть тестов провести ещё раз
  • Во многих сетях используется так называемый NAT, который часто является источником проблем в пиринговых сетях. Для того, чтобы узнать, есть ли он у Вас или нет, можно использовать эту инструкцию. К счастью, Jingle имеет некоторые средства для обхода NAT. Рекомендуется указать STUN-сервер в клиенте, например, stunserver.org. Обычно эта опция находится в настройках клиента, а в Psi её можно найти в настройках учетной записи. Более надежной альтернативой является использование IPv6, но, к сожалению, этот способ может не работать на некоторых клиентах. Ниже представлен список клиентов, работающих с IPv6:
ToDo: Выделить в отдельную статью, изменить таблицу (если она нужна, ибо мало элементов - можно просто составить список)
Поддержка IPv6 Клиент
Psi+ Gajim Pidgin QIP Infium Empathy Maemo 5
X ? X


Если Вы хотите попробовать работоспособность Jingle в своём клиенте, то для этого можете воспользоваться следующими ботами:

Примечание:

  1. Для передачи голоса и видеосигнала на Linux и Mac OS X необходимо установить плагин. Файл libgstprovider.so нужно скопировать в папку "plugins", находящуюся в месте установки Psi (в случае GNU/Linux - /usr/lib/psi/). Если Вы собираете Psimedia самостоятельно, то для сборки необходим GStreamer версии не ниже 0.10.22, а также Speex и некоторые другие библиотеки.
  2. Вызов проходит и разговор начинается, но клиент вылетает по таймауту
  3. 3,0 3,1 3,2 3,3 3,4 3,5 3,6 Соединение происходит успешно, однако голоса не слышно
  4. 4,0 4,1 4,2 Есть вероятность, что работает

Ссылки