XMPP Smack API RosterListener +データベースの変更
質問
Smack APIを使用してJavaでXMPPクライアントを作成しています。
各ユーザーの名簿リスナーを登録すると、Smack APIが呼び出します...
public void entriesAdded(Collection arg0) {}
...名簿の追加に気付くたびに。
データベースが変更されてもSmack APIのcreateEntry()メソッドを使用しない場合、このリスナーがオフになるかどうかを知っていますか?
基本的に、XMPPクライアントをWebサイトに結び付けたいと思います。あなたが誰かをウェブサイトの友達リストに追加するとき、私はそのサイトがクライアントに通知することを望みます。ソケットをセットアップしたり、PHPを使用してXMPPサーバーにログインするのではなく、データベースを変更するだけで機能することを望んでいました。
これは機能しますか、またはクライアントが絶えずデータベースに変更をポーリングせずにこれを処理する別の方法がありますか?
解決
データベースの変更は、クライアントライブラリであるため、Smackとは直接関係ありません。データベースはありません。データベースはサーバーによって使用およびアクセスされます。サーバーによっては、dbが変更されたときにサーバーがメッセージを投稿できる機能があります。 xmppサーバーに実際にこの機能があるかどうかはわかりません。
使用しているサーバーの機能を確認し、サーバー自体の拡張機能を使用して名簿エントリを追加する必要があります。データベースを直接変更することは、XMPPサーバーとデータベースが同期していない可能性が高いため、実際に進む方法のようには聞こえません。
データベースをポーリングするクライアントに関しては、XMPPサーバーおよび潜在的にWebサーバーで使用されている場合、クライアントがデータベースに直接アクセスできるようにすることは良い考えのように思えません。