0

私は、XMPP サーバーを使用して Jabber チャット アプリケーションに取り組んでいます。2人のユーザーフレンドを作りたいので、mysqlクエリを使用して名簿を追加する必要があります。(1) ofRoster (2)ofRosterGroups の 2 つのテーブルにエントリを作成しました。両方のテーブルにエントリを作成しましたが、機能しません。

私が行方不明になっているものはありますか。管理パネルでこれを行うことができますが、やりたくありません。

4

2 に答える 2

1

openfire を使用していると思います (SQL のこれらのテーブルは、openfire セットアップのように見えます)。その場合、編集する必要があるテーブルは「ofGroupUser」です。ユーザーをグループに追加するには、そのテーブルに sql insert を実行する必要があります。ここで、グループ名はユーザーを追加するグループ、ユーザー名はグループに追加するユーザー、管理者はそのフラグです。ユーザーの権限 (単に 0 を使用)。挿入例は次のようになります。

INSERT INTO ofGroupUser VALUES("グループ名", "ユーザー", 管理者);

ただし、上記の投稿で述べたように、これはサーバーにすぐに影響しないため、これを行うための良い方法ではありません. これらの変更を有効にするには、サーバーを再起動する必要があります。なぜなら、openfire (または使用しているサーバー) はおそらく起動時にデータベースを読み取るだけだからです。すべてをキャッシュすると、要求に従ってデータベースを編集します (管理コンソールを介してユーザーまたはグループを追加するなど) が、そこから読み取られることはなく、サーバーの再起動が発生するまで追加は表示されません。

基本的に、手動で SQL 挿入を行うと、目的の結果が得られます。機能をテストするだけであれば、サーバーを再起動する限り問題なく動作します。Openfire を使用していて、Web UI 以外の方法でグループ管理作業を行う必要がある場合は、別のサーバーの使用を検討します。私の知る限り、openfire は、Web UI 以外の管理ではあまり優れていません。 これは、多くのオープン ソース xmpp サーバーのリストですejabberdをお勧めします(上記の投稿で述べたように) ejabberdctl と呼ばれる非常に優れた制御ツールがあり、mod_ctlextra と呼ばれる利用可能な拡張モジュールがあります (コマンドを一覧表示する man ページはここにあります)。)これにより、あなたが望んでいることを実行できるようになります。次に、SQLと再起動について心配する必要はありません。本来あるべきツールを使用するだけです。

また、補足として、ejabberd は、それを記述するために使用される言語の性質により、非常に効率的です: Erlang。素晴らしいもの。

それが役立つことを願っています!

于 2012-06-06T19:48:36.020 に答える
0

おそらく、ejabberd で odbc モジュールを使用しています。ただし、SQLスキーマは、質問で言及したものではなく、 2つのテーブルrostergroupsとを定義します。rosterusersいずれの場合も、テーブルを直接更新しないでください。ejabberd は内部状態を保持し、変更の通知を受けません。

行く方法は、実際にユーザーに相互サブスクリプションを送信させ、rfcに従ってそれらを受け入れることです。名簿アイテム交換も役に立つかもしれません。

于 2012-06-06T17:13:23.940 に答える