2012-02-16 17 views
5

Libjingle sembra molto potente e viene fornito con una serie di programmi ed estensioni di esempio. Eppure non sono stato in grado di usarlo, e le persone con cui ho parlato su IRC mi hanno detto che hanno scoperto che l'API era un disastro e dovrei usare qualcos'altro.Un tutorial per libjingle?

Ma io sono disposto a dare un altro tentativo. Qualcuno ha un buon tutorial? O una buona presentazione delle diverse classi, per iniziare? (La documentazione ufficiale di Google non lo è).

risposta

1

Ho appena creato libjingle. Non ha creato subito la confezione e ha richiesto alcune patch (documentate sul sito di libjingle). E sto per fare test end-to-end con esso. Sono felice di condividere le cose che imparo.

+0

può fornire informazioni per il documento libjingle e i passaggi per crearlo. Grazie in anticipo. –

1

Se hai problemi di costruzione, mi sento male per te, figliolo. Perché seriamente, libjingle è una cagna da compilare. Se riesci a farlo compilare per qualunque piattaforma tu stia sviluppando, allora sei il 90% del modo in cui ci sei. Dipenderà davvero da te che ti siedi per un fine settimana e dai problemi di compilazione uno per uno. Due puntatori rapidi per Xcode: rimuovi (ma non cancella) tutte le merde specifiche di Windows e rimuovi tutti i file che hanno un metodo principale (unittests e main).

Una volta che l'hai creato, l'API è in realtà piuttosto straight-forward. L'architettura di una tipica applicazione libjingle ha diverse attività XMPP che vengono eseguite. Alcune attività sono attività di output che invieranno strofe: http://code.google.com/p/libjingle/source/browse/trunk/talk/examples/call/friendinvitesendtask.cc (guarda il metodo di invio) Questo dovrebbe essere abbastanza semplice. Costruisce una stanza XML e la accoda per l'elaborazione da parte di XMPPcliente.

Ci sono anche le attività di input che elaborano strofe: http://code.google.com/p/libjingle/source/browse/trunk/talk/examples/call/mucinviterecvtask.cc (sguardo al metodo di HandleStanza)

Anche se questo particolare metodo di HandleStanza è una merda-spettacolo, l'essenza di esso è che questo metodo viene chiamato per tutti Messaggi XMPP. Innanzitutto è necessario per determinare se vi preoccupate o no:

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

Poi si cammina attraverso l'XML ed estrarre le informazioni necessarie e le parti della vostra applicazione di segnale che preoccupa di questo.

Ovviamente, c'è anche l'API di tunneling, che è sostanzialmente più complicata e non proprio nell'ambito di una risposta StackOverflow. Se c'è abbastanza interesse posso entrare in questo, ma ti raccomando di impostare almeno libjingle e passare alcuni messaggi XMPP prima di immergerti nella configurazione dei tunnel.

Un ultimo puntatore sull'uso di libjingle: sii ESTREMAMENTE attento al threading.