3

私はすでにかなりの量のトラフィックを持つ非常にシンプルなウェブサイトを持っています。

そこで、ユーザーが友情の中でチャットできるように、とWebチャットを追加することにしました。このタスクを完了するためにejabberdを使用することにしました。問題は次のとおりです。すでに2つのテーブル(users [uid、nickname、pass]とrelationships [rid、uid、uid2])があります。これらのテーブル内のデータを処理するようにejabberに指示するにはどうすればよいですか?モジュールを見つけることができますか? authのもののように、編集して私の目的に適応させるために?

編集

rosterusersテーブルを使用したくないが、直接私のelationships [rid、uid、uid2]を使用したい場合、何を変更する必要があるかについてアドバイスがありますか?

1)まず、odbc_queries内で、関数get_roster内のクエリを

"select uid, uid2 from relationships "
       "where uid ='", Username, "'"]).

2)mod_roster_dbc内の「タプル列のチェッカー」関数get_roster

3)次に、関数raw_to_recordを次のようにします。

raw_to_record(LServer, {Uid,Uid2}) ->
case  jlib:make_jid(Uid2, LServer, "") of
error ->
    error;
JID ->
    LJID = jlib:jid_tolower(JID),
    Subscription = both,
    Ask = both,

      end,
    #roster{usj = {Uid, LServer, LJID},
        us = {Uid, LServer},
        jid = LJID,
        name = "",
        subscription = Subscription,
        ask = Ask,
        askmessage = ""}
end.

それで?

4

2 に答える 2

1

連絡先リストについては、独自の名簿モジュールを定義する必要があります。

開始点としてmod_rosterまたはmod_roster_odbcを使用できます。これらのモジュールはかなり複雑で、名簿やサブスクリプションなどへの読み取り/書き込みアクセスを提供することに注意してください。あなたの場合、おそらく読み取りアクセスのみが必要であるため(友人関係はWebサイトによって管理されるため)、実装ははるかに簡単になります(たとえば、「get」IQリクエストを処理する必要がありますが、「set」IQリクエストには何もしません)。

関係の変更を(次回のログイン時ではなく)接続しているユーザーにすぐに表示する必要がある場合は、変更のたびにWebアプリから呼び出されるejabberd側のAPIを提供して、更新されたものを「プッシュ」できるようにする必要があります。接続されたユーザーへの名簿情報。

于 2012-09-25T02:00:41.410 に答える
0

ejabberd_auth_odbcを見てください。これはejabberd_authの背後で機能するため、テーブルがxmpp仕様に正確に沿っていない場合は、カスタム認証モジュールを簡単に作成できます。

于 2012-09-25T00:42:58.347 に答える