ejabberd和自定义花名册

3

我已经有一个非常简单的网站,拥有相当好的流量。

所以我决定添加一个网络聊天室,让我的用户在朋友之间进行聊天。我决定使用ejabberd来完成这个任务。问题是:我已经有2个表(users [uid,昵称,密码]和relationships [rid,uid,uid2])。我怎样告诉ejabberd使用这些表中的数据呢?我能否找到任何模块,像auth模块一样,用于编辑和适应我的目的?

编辑

如果我不想使用rosterusers表,而是直接使用我的relationships [rid,uid,uid2],你有什么建议需要更改吗?

首先,在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.

然后呢?
2个回答

1

对于联系人列表,您需要定义自己的花名册模块。

您可以使用mod_roster或mod_roster_odbc作为起点。请注意,这些模块非常复杂,并提供对花名册、订阅等的读/写访问。在您的情况下,您可能只需要读取访问权限(因为好友关系由您的网站管理),因此实现将简单得多(例如,您需要处理“获取”IQ请求,但不需要在“设置”IQ请求上做任何事情)。

如果您需要更改关系立即对连接的用户可见(而不是在下次登录时),则需要在ejabberd端提供一个API,以便在每次更改时从您的Web应用程序调用,以能够"推送"更新的花名册信息给连接的用户。


0

看看ejabberd_auth_odbc。它在ejabberd_auth后面工作,因此如果您的表不完全按照xmpp规范进行,则编写自定义auth模块将变得容易。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接