2012-02-16 3 views
5

Libjingle кажется очень мощным и поставляется с кучей примеров программ и расширений. Но я не смог его использовать, и люди, с которыми я разговаривал в IRC, сказали мне, что они обнаружили, что API был беспорядок, и я должен использовать что-то еще.Учебник для libjingle?

Но я готов дать ему еще одну попытку. У кого-нибудь есть хороший учебник? Или хорошая презентация разных классов, чтобы начать? (Официальная документация Google отсутствует).

ответ

1

Я только что построил libjingle. Он не создавал готовые пакеты и требовал некоторых патчей (документированных на сайте libjingle). И я собираюсь сделать с ним сквозные тесты. Я рад поделиться вещами, которые я изучаю.

+0

может предоставить информацию для документа libjingle и шаги по его созданию. Заранее спасибо. –

1

Если у вас проблемы с построением, я плохо себя чувствую, сын. Потому что серьезно, libjingle - сука, которую нужно скомпилировать. Если вы можете скомпилировать его для любой платформы, на которой вы строите, то вы на 90% оттуда. На самом деле это будет зависеть от того, что вы сидите в выходные и вспахиваете по вопросам компилятора один за другим. Два быстрых указателя для Xcode: удаляют (но не удаляют) все завитушки для окна и удаляют все файлы, которые имеют основной метод (unittests и mains.)

После того, как вы его построили, API на самом деле скорее прямо вперед. Архитектура типичного приложения libjingle имеет несколько задач XMPP, которые запускаются. Некоторые задачи - это выходные задачи, которые будут отправлять строфы: http://code.google.com/p/libjingle/source/browse/trunk/talk/examples/call/friendinvitesendtask.cc (смотрите способ отправки) Это должно быть довольно прямолинейно. Он создает строфу XML и ставит ее в очередь для обработки XMPPclient.

Есть также входные задачи, которые обрабатывают строфы: http://code.google.com/p/libjingle/source/browse/trunk/talk/examples/call/mucinviterecvtask.cc (взгляд на метод HandleStanza)

Хотя этот конкретный метод HandleStanza это дерьмо-шоу, суть его в том, что этот метод вызывается для всех Сообщения XMPP. Прежде всего, необходимо определить, если вы заботитесь об этом или нет:

if (stanza->Name() != QN_MESSAGE) return false; 

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

Конечно, есть также API туннелирования, который существенно сложнее и не является действительно ответом на StackOverflow. Если у меня будет достаточно интереса, я могу это понять, но я рекомендую сначала по крайней мере настроить libjingle и передать некоторые сообщения XMPP, прежде чем вы погрузитесь в настройку туннелей.

Один последний указатель об использовании libjingle: будьте ЧРЕЗВЫЧАЙНЫ внимательны к потоку.