Libjingle似乎非常强大,附带了大量示例程序和扩展。然而,我无法使用它,我在IRC上与之交谈的人告诉我,他们发现API很乱,我宁愿使用别的东西。
但我愿意再试一次。有没有人有一个很好的教程?还是好好介绍不同的课程,开始? (谷歌的官方文件不是)。
答案 0 :(得分:1)
我刚建了libjingle。它没有开箱即用,需要一些补丁(在libjingle网站上记录)。我即将用它进行端到端的测试。我很乐意分享我学到的东西。
答案 1 :(得分:1)
如果你有构建问题,我觉得你很难,儿子。因为认真,libjingle是一个被编译的婊子。如果你可以根据你正在构建的任何平台编译它,那么你就有90%的方式。这真的取决于你坐在一个周末,一个接一个地翻阅编译器问题。 Xcode的两个快速指针:删除(但不删除)所有特定于Windows的shit,并删除所有具有main方法的文件(unittests和mains。)
构建完成后,API实际上非常简单。典型的libjingle应用程序的体系结构有几个运行的XMPP任务。一些任务是将发送节的输出任务: http://code.google.com/p/libjingle/source/browse/trunk/talk/examples/call/friendinvitesendtask.cc (看看Send方法) 这应该是非常简单的。它构建了一个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的最后一个指针:非常小心线程化。