【问题标题】:How to know if the user is online providing only the username/nick/participant but not the whole JID (Ejabberd)如何知道用户是否在线仅提供用户名/昵称/参与者但不提供整个 JID (Ejabberd)
【发布时间】:2013-01-31 19:23:16
【问题描述】:

我正在自定义模块mod_muc_room,我想添加一个知道用户是否在线但只提供用户名的功能。在模块中我可以找到函数is_user_online:

is_user_online(JID, StateData) ->

LJID = jlib:jid_tolower(JID),

?DICT:is_key(LJID, StateData#state.users).

我知道我必须提供用户名、服务器和资源。 LJID,会导致类似{"user", "myserver.com, "someid"}

我想添加一个返回相同但只提供“用户”之类的函数

User = "user",

is_member_online(User, StateData) ->

?DICT:is_key(User, StateData#state.users).

我可以就如何实现这一点提供一些建议吗?

【问题讨论】:

    标签: functional-programming erlang xmpp ejabberd erlang-ports


    【解决方案1】:

    您可以使用它来获取主机列表:

    ejabberd_config:get_global_option(hosts)

    然后使用它来检查用户是否在线:

    ejabberd_sm:get_user_resources(User, Host)

    如果用户离线,这将返回一个空数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 2015-01-24
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多