Difference between revisions of "Jingle"
(фиксы + описание) |
(→Состояние и применимость технологии) |
||
(23 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
− | + | {{interwiki | |
+ | | ruwiki = Jingle (протокол) | ||
+ | | enwiki = | ||
+ | | jworld = Jingle | ||
+ | }} | ||
+ | : ''Эта статья о протоколе {{xep|0166|Jingle}}. О реализующей его библиотеке см. [[libjingle]].'' | ||
+ | [[File:JingleLogo.png|thumb|Один из вариантов логотипа Jingle]] | ||
+ | '''Jingle''' - универсальный сигнальный протокол для XMPP. В его функции не входит сама передача данных, а только организация соединения - т.н. "рукопожатие". Другими словами, два клиента, используя Jingle, оговаривают адреса, порты, тип передаваемых данных, кодеки, тип канала, используемые транспорты и другую информацию, необходимую для установки соединения, по которому уже будет происходить непосредственная передача данных. | ||
− | == | + | == Состояние и применимость технологии == |
− | + | ||
+ | В данный момент пока сложно пользоваться голосовыми функциями в силу различных технических моментов и несовместимости клиентов. Но ситуация постепенно выправляется и уже можно найти рабочие комбинации, в которых голосовое взаимодействие возможно (смотрите таблицу размещенную ниже). Если у вас есть сомнения, то на обеих сторонах используйте один и тот же клиент. О практической стороне использования мультимедийный возможностей информация изложена на странице [[Голос и видео в jabber]]. | ||
+ | |||
+ | == Применение == | ||
+ | |||
+ | XEP-166 определяет только базовую функциональность сигнального протокола. Для каждого типа потока данных (звук, файлы, видео) существуют отдельные стандарты, конкретизирующие применение Jingle в своей области: | ||
+ | # {{xep|0167|Jingle RTP Sessions}} — звук и видео через [http://ru.wikipedia.org/wiki/RTP RTP]. | ||
+ | # {{xep|0177|Jingle Raw UDP Transport}} — создание UDP соединения для передачи любых данных. | ||
+ | # шуточный {{xep|0183|Jingle Telepathy Transport}} — создание телепатического канала для передачи мыслей. | ||
+ | |||
+ | == Поддержка в программах == | ||
+ | |||
+ | === Две версии Jingle === | ||
+ | Клиент [[GTalk]] (на библиотеке [[libjingle]], созданной командой Google) работает поверх очень похожего на Jingle протокола, но все же, это не тот Jingle, который описан в соответствующем [[XEP]] ({{xep|0166|Jingle}}). По этой причине клиенты на базе [[libjingle]] не совместимы с клиентами, имеющими реализацию по XEP. | ||
+ | |||
+ | Например, в [[QIP]] реализация Jingle от Google ([[libjingle]]), поэтому с [[Psi+]] он не может взаимодействовать. Но даже эта, устаревшая реализация Jingle, есть только в версиях 9032 и 9034. Озвучиваются планы во возврату этой поддержки позднее<ref>http://juick.com/leksey/1282084#54</ref>. Но полноценный Jingle трудно ожидать в QIP, потому что в [[RBK|РБК]] делается упор на [[SIP]]. | ||
+ | |||
+ | В данной вики есть специальная [[:Category:Jingle|категория для программ, поддерживающих Jingle]], где есть как клиенты, так и [[:Category:Библиотеки с поддержкой Jingle|библиотеки]]. | ||
+ | |||
+ | Данная таблица взята со страницы из вики [[jworld:Jingle|JabberWorld]] и может содержать неверную информацию. Но она должна правиться и снабжаться соответствующими сносками-пояснениями. Методика и протоколы тестирования планируется [[Jingle/test|опубликовать здесь]]. | ||
+ | <center> | ||
+ | {| class="wikitable" | ||
+ | |rowspan=2 align=center bgcolor=lightgreen width=110|'''Вызывающая сторона''' | ||
+ | |colspan=14 align=center bgcolor=lightblue|'''Принимающая сторона''' | ||
+ | |- | ||
+ | !width=60 bgcolor=lightblue|[[Psi|Psi+]] | ||
+ | !width=60 bgcolor=lightblue|[[Gajim]] | ||
+ | !width=60 bgcolor=lightblue|[[Pidgin]] | ||
+ | !width=60 bgcolor=lightblue|[[QIP Infium]] | ||
+ | !width=60 bgcolor=lightblue|[[Empathy]] | ||
+ | !width=60 bgcolor=lightblue|[[Maemo 5]] | ||
+ | !width=60 bgcolor=lightblue|[[Kopete]] | ||
+ | !width=60 bgcolor=lightblue|[[Spark]] | ||
+ | !width=60 bgcolor=lightblue|[[Google Talk (клиент)|Google Talk]] | ||
+ | !width=60 bgcolor=lightblue|[[Coccinella]] | ||
+ | !width=60 bgcolor=lightblue|[[Talkonaut]] | ||
+ | !width=60 bgcolor=lightblue|[[Nimbuzz]] | ||
+ | |- | ||
+ | !bgcolor=lightgreen|[[Psi+|Psi+]] | ||
+ | |{{Да}} | ||
+ | |{{Да}} | ||
+ | |{{Частично|?<ref name=timeout>Вызов проходит и разговор начинается, но клиент разрывал соединение по таймауту</ref>}} | ||
+ | |{{Нет}} | ||
+ | |{{Да}} | ||
+ | |{{Да|Да<ref name="no_voice">Соединение происходит успешно, однако, голоса не слышно</ref>}} | ||
+ | | | ||
+ | |{{Нет}} | ||
+ | |{{Нет}} | ||
+ | |{{Нет}} | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | !bgcolor=lightgreen|[[Gajim]] | ||
+ | |{{Да}} | ||
+ | |{{Да}} | ||
+ | |{{Да}} | ||
+ | |{{Нет}} | ||
+ | |{{Да}} | ||
+ | |{{Да}} | ||
+ | | | ||
+ | |{{Нет}} | ||
+ | |{{Нет}} | ||
+ | |{{Нет}} | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | !bgcolor=lightgreen|[[Pidgin]] | ||
+ | |{{Да}} | ||
+ | |{{Да}} | ||
+ | |{{Да}} | ||
+ | |{{Да|Да<ref name='qip'>Результаты для старой версии QIP Infium</ref>}} | ||
+ | |{{Да}} | ||
+ | |{{Да}} | ||
+ | | | ||
+ | |{{Нет}} | ||
+ | |{{Да}} | ||
+ | |{{Нет}} | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | !bgcolor=lightgreen|[[QIP Infium]] | ||
+ | |{{Нет}} | ||
+ | |{{Нет}} | ||
+ | |{{Да|Да<ref name='qip'>Результаты для старой версии QIP Infium</ref>}} | ||
+ | |{{Да|Да<ref name='qip'>Результаты для старой версии QIP Infium</ref>}} | ||
+ | |{{Да|Да<ref name='qip'>Результаты для старой версии QIP Infium</ref>}} | ||
+ | |{{Нет}} | ||
+ | | | ||
+ | | | ||
+ | |{{Да|Да<ref name='qip'>Результаты для старой версии QIP Infium</ref>}} | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | !bgcolor=lightgreen|[[Empathy]] | ||
+ | |{{Да}} | ||
+ | |{{Да}} | ||
+ | |{{Да}} | ||
+ | |{{Да|Да<ref name='qip'>Результаты для старой версии QIP Infium</ref>}} | ||
+ | |{{Да}} | ||
+ | |{{Да}} | ||
+ | | | ||
+ | |{{Нет}} | ||
+ | |{{Да}} | ||
+ | |{{Нет}} | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | !bgcolor=lightgreen|[[Maemo 5]] | ||
+ | |{{Да|Да<ref name="no_voice">Соединение происходит успешно, однако голоса не слышно</ref>}} | ||
+ | |{{Да}} | ||
+ | |{{Да|Да<ref name="no_voice">Соединение происходит успешно, однако голоса не слышно</ref>}} | ||
+ | |{{Нет}} | ||
+ | |{{Да}} | ||
+ | |{{Да}} | ||
+ | | | ||
+ | | | ||
+ | |{{Да}} | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | !bgcolor=lightgreen|[[Kopete]] | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | !bgcolor=lightgreen|[[Spark]] | ||
+ | |{{Нет}} | ||
+ | |{{Нет}} | ||
+ | |{{Нет}} | ||
+ | | | ||
+ | |{{Нет}} | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |{{Нет}} | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | !bgcolor=lightgreen|[[Google Talk]] | ||
+ | |{{Нет}} | ||
+ | |{{Нет}} | ||
+ | |{{Частично|?<ref name='freeze'>Клиент зависал при приеме звонка</ref>}} | ||
+ | |{{Да|Да<ref name='qip'>Результаты для старой версии QIP Infium </ref>}} | ||
+ | |{{Частично|?<ref name='freeze'>Клиент зависал при приеме звонка</ref>}} | ||
+ | |{{Да}} | ||
+ | | | ||
+ | |{{Да}} | ||
+ | |{{Да}} | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | !bgcolor=lightgreen|[[Coccinella]] | ||
+ | |{{Нет}} | ||
+ | |{{Нет}} | ||
+ | |{{Нет}} | ||
+ | | | ||
+ | |{{Нет}} | ||
+ | | | ||
+ | | | ||
+ | |{{Нет}} | ||
+ | | | ||
+ | |{{Нет}} | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | !bgcolor=lightgreen|[[Talkonaut]] | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | !bgcolor=lightgreen|[[Nimbuzz]] | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | [[File:Gajim-voice-ubuntu.png|center|600px]] | ||
+ | |||
+ | == Использование клиентами за {{w|NAT}} == | ||
+ | |||
+ | Прохождение NAT осуществляется с использованием [[STUN]]. Его поддержка встроена в современные версии [[ejabberd]], национальный сервер [[jabber.ru]] работает под управлением версии с поддержкой [[STUN]]. | ||
+ | |||
+ | jingle nodes relay - реализация Jingle supernode. Узел позволяющий клиентам, не имеющих возможности передавать голос напрямую. Копия запущена, например, на сервере [[Talkr.im]]. По состоянию на весну 2011 года эта технология очень мало распространена и вряд ли может быть использована на практике. | ||
== История == | == История == | ||
− | До появления Jingle | + | |
+ | До появления Jingle ситуация с поддержкой голоса, видео и других p2p потоков была следующая: существовало несколько закрытых протоколов, используемых в закрытых клиентах, с одной стороны, и был разработан открытый стандарт {{w|TINS}} - с другой. Закрытые протоколы, помимо того, что были закрыты от сообщества, не всегда учитывали требования, необходимые для совместимости с уже существующими сетями на базе SIP, а открытый TINS имел недостатки, непозволяющие ему легко встраиваться в Jabber/XMPP клиенты. | ||
Такая ситуация привела к расколу сообщества и [[XSF]] оказалась перед выбором: | Такая ситуация привела к расколу сообщества и [[XSF]] оказалась перед выбором: | ||
Line 11: | Line 234: | ||
# Сделать новый полноценный сигнальный протокол для XMPP | # Сделать новый полноценный сигнальный протокол для XMPP | ||
− | Опыт подсказывал, что не везде, где уже сделаны клиенты Jabber, можно реализовать двойную поддержку, поэтому XFS решило попробовать второй вариант и Joe Hildebrand вместе с Peter Saint-Andre начали разработку протокола, который бы обеспечил необходимую сигнальную функциональность и остался бы совместим с существующими стандартами. Кодовое название протокола стало Jingle (звенеть) | + | Опыт подсказывал, что не везде, где уже сделаны клиенты Jabber, можно реализовать двойную поддержку, поэтому XFS решило попробовать второй вариант и Joe Hildebrand вместе с Peter Saint-Andre начали разработку протокола, который бы обеспечил необходимую сигнальную функциональность и остался бы совместим с существующими стандартами. Кодовое название протокола стало Jingle ("звенеть") |
После общения с разработчиками из Google стало понятно, что только появляющийся Jingle концептуально (и даже местами семантически) похож на сигнальный протокол используемый в приложении [[GTalk|Google Talk]]. Тогда, ради совместимости, было решено согласовать эти два протокола и разработчики из Google стали входить в процесс разработки Jingle как соавторы. | После общения с разработчиками из Google стало понятно, что только появляющийся Jingle концептуально (и даже местами семантически) похож на сигнальный протокол используемый в приложении [[GTalk|Google Talk]]. Тогда, ради совместимости, было решено согласовать эти два протокола и разработчики из Google стали входить в процесс разработки Jingle как соавторы. | ||
− | Сейчас Jingle в основном идентичен протоколу используемому в GTalk, отличия заключаются в нескольких корректировках основанных на откликах разработчиков приложений. | + | Сейчас Jingle в основном идентичен протоколу используемому в GTalk, отличия заключаются в нескольких корректировках, основанных на откликах разработчиков приложений. |
== Jingle и SIP == | == Jingle и SIP == | ||
− | Сигнальный XMPP протокол Jingle работает поверх только XMPP без использования SIP из-за того, что создавать и поддерживать клиенты реализующие два больших протокола вместо одного достаточно сложно. В цели разработчиков Jingle не входило заменить или выжить SIP, вместо этого они постарались сделать протокол таким, чтобы клиенты без особых сложностей могли входить в | + | |
+ | Сигнальный XMPP протокол Jingle работает поверх только XMPP (без использования {{w|SIP}}) из-за того, что создавать и поддерживать клиенты реализующие два больших протокола вместо одного достаточно сложно. В цели разработчиков Jingle не входило заменить или выжить SIP, вместо этого они постарались сделать протокол таким, чтобы клиенты без особых сложностей могли входить в существующие SIP сети. | ||
{{todo|уточнить, что именно в протоколе позволяет делать такой фокус, можно ли XMPP+Jingle клиент использовать как SIPPhone}} | {{todo|уточнить, что именно в протоколе позволяет делать такой фокус, можно ли XMPP+Jingle клиент использовать как SIPPhone}} | ||
+ | Транспорт Jabber->SIP: см. [http://www.gtalk2voip.com/ Gtalk2VoIP] | ||
− | == | + | == См. также == |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
* [[:Category:Jingle|Программы, которые используют или реализуют Jingle]] | * [[:Category:Jingle|Программы, которые используют или реализуют Jingle]] | ||
+ | * [[Голос и видео в jabber]] | ||
+ | * [[Muji]] (Multiparty Jingle) | ||
== Ссылки == | == Ссылки == | ||
− | * | + | |
− | * [http:// | + | * {{xep|0166|Jingle}} |
+ | * [http://xmpp.org/about-xmpp/technology-overview/jingle/ Официальная документация по протоколу] | ||
+ | * [[Jingle/test|Тестирование Jingle в реальных условиях]] | ||
+ | |||
+ | == Примечания == | ||
+ | <references/> | ||
+ | |||
+ | [[Category:Протоколы]] | ||
+ | [[Category:Расширения]] |
Latest revision as of 07:40, 11 February 2016
Статьи по этой теме на других вики-сайтах: | |
---|---|
Jingle (протокол) — Википедия | |
Jingle — JabberWorld |
- Эта статья о протоколе XEP-0166: Jingle. О реализующей его библиотеке см. libjingle.
Jingle - универсальный сигнальный протокол для XMPP. В его функции не входит сама передача данных, а только организация соединения - т.н. "рукопожатие". Другими словами, два клиента, используя Jingle, оговаривают адреса, порты, тип передаваемых данных, кодеки, тип канала, используемые транспорты и другую информацию, необходимую для установки соединения, по которому уже будет происходить непосредственная передача данных.
Contents
Состояние и применимость технологии[edit]
В данный момент пока сложно пользоваться голосовыми функциями в силу различных технических моментов и несовместимости клиентов. Но ситуация постепенно выправляется и уже можно найти рабочие комбинации, в которых голосовое взаимодействие возможно (смотрите таблицу размещенную ниже). Если у вас есть сомнения, то на обеих сторонах используйте один и тот же клиент. О практической стороне использования мультимедийный возможностей информация изложена на странице Голос и видео в jabber.
Применение[edit]
XEP-166 определяет только базовую функциональность сигнального протокола. Для каждого типа потока данных (звук, файлы, видео) существуют отдельные стандарты, конкретизирующие применение Jingle в своей области:
- XEP-0167: Jingle RTP Sessions — звук и видео через RTP.
- XEP-0177: Jingle Raw UDP Transport — создание UDP соединения для передачи любых данных.
- шуточный XEP-0183: Jingle Telepathy Transport — создание телепатического канала для передачи мыслей.
Поддержка в программах[edit]
Две версии Jingle[edit]
Клиент GTalk (на библиотеке libjingle, созданной командой Google) работает поверх очень похожего на Jingle протокола, но все же, это не тот Jingle, который описан в соответствующем XEP (XEP-0166: Jingle). По этой причине клиенты на базе libjingle не совместимы с клиентами, имеющими реализацию по XEP.
Например, в QIP реализация Jingle от Google (libjingle), поэтому с Psi+ он не может взаимодействовать. Но даже эта, устаревшая реализация Jingle, есть только в версиях 9032 и 9034. Озвучиваются планы во возврату этой поддержки позднее[1]. Но полноценный Jingle трудно ожидать в QIP, потому что в РБК делается упор на SIP.
В данной вики есть специальная категория для программ, поддерживающих Jingle, где есть как клиенты, так и библиотеки.
Данная таблица взята со страницы из вики JabberWorld и может содержать неверную информацию. Но она должна правиться и снабжаться соответствующими сносками-пояснениями. Методика и протоколы тестирования планируется опубликовать здесь.
Вызывающая сторона | Принимающая сторона | |||||||||||||
Psi+ | Gajim | Pidgin | QIP Infium | Empathy | Maemo 5 | Kopete | Spark | Google Talk | Coccinella | Talkonaut | Nimbuzz | |||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Psi+ | да | да | ?[2] | нет | да | Да[3] | нет | нет | нет | |||||
Gajim | да | да | да | нет | да | да | нет | нет | нет | |||||
Pidgin | да | да | да | Да[4] | да | да | нет | да | нет | |||||
QIP Infium | нет | нет | Да[4] | Да[4] | Да[4] | нет | Да[4] | |||||||
Empathy | да | да | да | Да[4] | да | да | нет | да | нет | |||||
Maemo 5 | Да[3] | да | Да[3] | нет | да | да | да | |||||||
Kopete | ||||||||||||||
Spark | нет | нет | нет | нет | нет | |||||||||
Google Talk | нет | нет | ?[5] | Да[4] | ?[5] | да | да | да | ||||||
Coccinella | нет | нет | нет | нет | нет | нет | ||||||||
Talkonaut | ||||||||||||||
Nimbuzz |
Использование клиентами за NAT[edit]
Прохождение NAT осуществляется с использованием STUN. Его поддержка встроена в современные версии ejabberd, национальный сервер jabber.ru работает под управлением версии с поддержкой STUN.
jingle nodes relay - реализация Jingle supernode. Узел позволяющий клиентам, не имеющих возможности передавать голос напрямую. Копия запущена, например, на сервере Talkr.im. По состоянию на весну 2011 года эта технология очень мало распространена и вряд ли может быть использована на практике.
История[edit]
До появления Jingle ситуация с поддержкой голоса, видео и других p2p потоков была следующая: существовало несколько закрытых протоколов, используемых в закрытых клиентах, с одной стороны, и был разработан открытый стандарт TINS - с другой. Закрытые протоколы, помимо того, что были закрыты от сообщества, не всегда учитывали требования, необходимые для совместимости с уже существующими сетями на базе SIP, а открытый TINS имел недостатки, непозволяющие ему легко встраиваться в Jabber/XMPP клиенты.
Такая ситуация привела к расколу сообщества и XSF оказалась перед выбором:
- Рекомендовать всем клиентам реализовывать одновременную поддержку и XMPP и SIP для передачи голоса
- Сделать новый полноценный сигнальный протокол для XMPP
Опыт подсказывал, что не везде, где уже сделаны клиенты Jabber, можно реализовать двойную поддержку, поэтому XFS решило попробовать второй вариант и Joe Hildebrand вместе с Peter Saint-Andre начали разработку протокола, который бы обеспечил необходимую сигнальную функциональность и остался бы совместим с существующими стандартами. Кодовое название протокола стало Jingle ("звенеть")
После общения с разработчиками из Google стало понятно, что только появляющийся Jingle концептуально (и даже местами семантически) похож на сигнальный протокол используемый в приложении Google Talk. Тогда, ради совместимости, было решено согласовать эти два протокола и разработчики из Google стали входить в процесс разработки Jingle как соавторы.
Сейчас Jingle в основном идентичен протоколу используемому в GTalk, отличия заключаются в нескольких корректировках, основанных на откликах разработчиков приложений.
Jingle и SIP[edit]
Сигнальный XMPP протокол Jingle работает поверх только XMPP (без использования SIP) из-за того, что создавать и поддерживать клиенты реализующие два больших протокола вместо одного достаточно сложно. В цели разработчиков Jingle не входило заменить или выжить SIP, вместо этого они постарались сделать протокол таким, чтобы клиенты без особых сложностей могли входить в существующие SIP сети.
Транспорт Jabber->SIP: см. Gtalk2VoIP
См. также[edit]
- Программы, которые используют или реализуют Jingle
- Голос и видео в jabber
- Muji (Multiparty Jingle)
Ссылки[edit]
Примечания[edit]
- ↑ http://juick.com/leksey/1282084#54
- ↑ Вызов проходит и разговор начинается, но клиент разрывал соединение по таймауту
- ↑ 3.0 3.1 3.2 Соединение происходит успешно, однако, голоса не слышно
- ↑ 4.0 4.1 4.2 4.3 4.4 4.5 4.6 Результаты для старой версии QIP Infium
- ↑ 5.0 5.1 Клиент зависал при приеме звонка