4

ライブラリを使用して、xmpppyユーザーとチャットできる XMPP クライアントを作成しています。独自の XMPP ユーザー アカウントがあり、特定のユーザーがオンラインかどうかを知る必要があります。ただし、これを行う方法についてのドキュメントは少しまばらです。あなたは何をお勧めします?

これまでに見た唯一の解決策は、XMPP サーバーが起動する前にデーモンを起動し、送信されるすべてのプレゼンス メッセージを監視することです。ユーザーは、「オンラインです」というメッセージを送信した場合、オンラインであると言われます。 -type メッセージですが、対応する「I'm log off」メッセージではありません。ただし、一般的に XMPP は初めてなので、これを行うためのより良い方法があると思います。

4

2 に答える 2

2

簡単な方法は、「サブスクライブ」プレゼンス メッセージをサポートすることです。これにより、別のユーザーは、「サブスクライブ」の試みによって、あなたが現在存在しているかどうか (まだ知らない場合) を確認できます。この便利なガイドを確認して開始し、さらに多くの重要な詳細については標準を確認してください (特に、必要に応じて、知らないユーザーからの購読要求からプライバシーを保護する方法について)。

于 2010-09-17T18:21:09.300 に答える
1

基本的に、XMPP サーバーに接続する方法は 3 つあります。クライアントとして (既に実行済みです)、コンポーネントとして、および別のサーバーとしてです。サーバー間タイプ (s2s) は単なるフェデレーション接続であり、メール サーバーが互いに電子メールを交換する方法と非常によく似ています。

Alex は、クライアントがプレゼンスを追跡する方法について説明しました。XMPP では、私のプレゼンス情報を受け取ることができることを承認する必要があり、その逆も同様です。ボットにとって、これは、エンド ユーザーがプレゼンス要求を受け入れる必要があるオンラインのユーザーを追跡することを意味します。また、ユーザーのプレゼンス リクエストに応答し、ボットが起動しているかどうかを知らせることもできます。

最後の方法は、信頼できるコンポーネントとしてのもので、サーバーを実行している場合にのみ機能します。つまり、 jabber.orgサーバーでこれを実行しようとしている場合、そのサーバーを実行していないため、うまくいきません。利点は、オンラインのすべての人のリストを取得するなど、XMPP サーバーの内部にアクセスできることです。欠点は、コンポーネント/ボットの実装がサーバーの実装ごとに異なることです。

于 2010-09-24T16:10:19.840 に答える