Libjingle看起来非常强大,并附带了一堆示例程序和扩展。然而,我一直无法使用它,在IRC上与我交谈过的人告诉我,他们发现API很混乱,我应该使用其他东西。
但我愿意再试一次。有没有人有好的教程?或者对不同的课程做一个很好的介绍?(谷歌的官方文档没有)。
发布于 2012-06-15 02:02:37
我刚刚构建了libjingle。它不是开箱即用的,需要一些补丁(在libjingle站点上有文档)。我将用它做端到端的测试。我很高兴分享我学到的东西。
发布于 2012-06-18 22:27:08
如果你在构建上有问题,我为你感到遗憾,孩子。因为说真的,libjingle是一个很难编译的东西。如果你能为你正在构建的任何平台编译它,那么你已经完成了90%的工作。这真的取决于你在周末坐下来,一个接一个地研究编译器的问题。Xcode的两个快速指针:移除(但不要删除)所有特定于windows的垃圾,并移除具有main方法(unittest和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并提取所需的信息,并向应用程序中关心这一点的部分发出信号。
当然,还有隧道应用编程接口,它要复杂得多,并且不属于StackOverflow答案的范围。如果有足够的兴趣,我可以开始讨论这个问题,但我建议您至少先设置libjingle并传递一些XMPP消息,然后再开始设置隧道。
关于使用libjingle的最后一点:对线程化要格外小心。
https://stackoverflow.com/questions/9320852
复制相似问题