5

Libjingle は非常に強力なようで、多数のサンプル プログラムと拡張機能が付属しています。それでも私はそれを使うことができず、私が IRC で話した人々は、API がめちゃくちゃで、別のものを使うべきだと言った.

しかし、私はもう一度試してみたいと思っています。誰かが良いチュートリアルを持っていますか? または、さまざまなクラスの優れたプレゼンテーションから始めますか? (Google の公式ドキュメントではありません)。

4

2 に答える 2

1

libjingleをビルドしました。すぐにビルドできず、いくつかのパッチが必要でした (libjingle サイトに記載されています)。そして、私はそれを使ってエンドツーエンドのテストを行おうとしています。私が学んだことを喜んで共有します。

于 2012-06-14T18:02:36.530 に答える
1

ビルドに問題がある場合は、申し訳ありません。真剣に、libjingleはコンパイルするのが難しいからです。構築しているプラ​​ットフォームに合わせてコンパイルできれば、90% 達成です。週末に座って、コンパイラの問題を 1 つずつ調べていくかどうかにかかっています。Xcode の 2 つのクイック ポインター: すべての Windows 固有のたわごとを削除 (ただし、削除しないでください)、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 の使用に関する最後のヒント: スレッド化には細心の注意を払ってください。

于 2012-06-18T14:27:08.110 に答える