Erlang ejabberd和定制花名册

Erlang ejabberd和定制花名册,erlang,xmpp,ejabberd,rostering,Erlang,Xmpp,Ejabberd,Rostering,我已经有一个非常简单的网站,流量相当大 所以我决定在上添加一个网络聊天,让我的用户在他们的友谊中聊天。 我决定用它来完成这项任务。 问题是:我已经有2个表(用户[uid,昵称,pass]和关系[rid,uid,uid2]。 我如何告诉ejabber处理这些表中的数据? 我能找到任何模块,比如auth的模块,来编辑和调整以达到我的目的吗 编辑 如果我不想使用rosterusers表,而是直接使用我的人际关系[rid、uid、uid2],您对我应该更改什么有什么建议吗 1) 首先,在odbc_查询中

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

所以我决定在上添加一个网络聊天,让我的用户在他们的友谊中聊天。 我决定用它来完成这项任务。 问题是:我已经有2个表(用户[uid,昵称,pass]和关系[rid,uid,uid2]。 我如何告诉ejabber处理这些表中的数据? 我能找到任何模块,比如auth的模块,来编辑和调整以达到我的目的吗

编辑

如果我不想使用rosterusers表,而是直接使用我的人际关系[rid、uid、uid2],您对我应该更改什么有什么建议吗

1) 首先,在odbc_查询中,函数get_花名册中的查询

"select uid, uid2 from relationships "
       "where uid ='", Username, "'"]).
2) mod_lotster_dbc函数get_lotster中的“元组列检查器”

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.

然后?

看看ejabberd\u auth\u odbc。它在ejabberd_auth之后工作,因此如果您的表不完全符合xmpp规范,那么编写自定义的auth模块将很容易。

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

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

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