2012-02-16 21 views
5

Libjingle parece muy potente y viene con un montón de programas de ejemplo y extensiones. Sin embargo, no he podido usarlo, y las personas con las que he hablado en IRC me han dicho que descubrieron que la API era un desastre y que preferiría usar algo más.¿Un tutorial para libjingle?

Pero estoy dispuesto a darle otra oportunidad. ¿Alguien tiene un buen tutorial? O una buena presentación de las diferentes clases, para empezar? (La documentación oficial de Google no lo está).

Respuesta

1

Acabo de crear libjingle. No se compiló de inmediato y requirió algunos parches (documentados en el sitio libjingle). Y estoy a punto de hacer pruebas de extremo a extremo con él. Estoy feliz de compartir cosas que aprendo.

+0

puede proporcionar información para el documento libjingle y los pasos para crearlo. Gracias por adelantado. –

1

Si tienes problemas de construcción, me siento mal por ti, hijo. Porque en serio, libjingle es una perra para compilarse. Si puedes compilarlo para cualquier plataforma en la que estés desarrollando, entonces estás el 90% del camino hasta allí. Realmente va a depender de que te sientas en un fin de semana y estés resolviendo los problemas del compilador uno por uno. Dos punteros rápidos para Xcode: elimine (pero no elimine) todos los errores específicos de Windows, y elimine todos los archivos que tengan un método principal (unittest y main).

Una vez que lo haya construido, la API es bastante sencillo. La arquitectura de una aplicación libjingle típica tiene varias tareas XMPP que se ejecutan. Algunas tareas son tareas de salida que enviarán stanzas: http://code.google.com/p/libjingle/source/browse/trunk/talk/examples/call/friendinvitesendtask.cc (consulte el método de envío) Esto debería ser bastante directo. Construye una estrofa XML y la pone en cola para que XMPPclient la procese.

También hay tareas de entrada que procesan estrofas: http://code.google.com/p/libjingle/source/browse/trunk/talk/examples/call/mucinviterecvtask.cc (ver el método HandleStanza)

Si bien este método HandleStanza particular es una mierda presentas, el quid de la cuestión es que este método se llama para todos Mensajes XMPP. Primero tiene que determinar si se preocupan por él o no:

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

A continuación, podrá caminar a través del XML y tire de la información que necesita y partes de señal de su aplicación que se preocupan por esto.

Por supuesto, también está la API de túnel, que es sustancialmente más complicada y no está en el alcance de una respuesta de StackOverflow. Si hay suficiente interés, puedo entrar en esto, pero recomiendo que primero al menos configure libjingle y pase algunos mensajes XMPP antes de sumergirse en la configuración de túneles.

Un último puntero sobre el uso de libjingle: tenga EXTREMADAMENTE cuidado con el enhebrado.