Functional programming 如何知道用户是否在线,只提供用户名/尼克/参与者,而不提供整个JID(Ejabberd)
我正在定制模块Functional programming 如何知道用户是否在线,只提供用户名/尼克/参与者,而不提供整个JID(Ejabberd),functional-programming,erlang,xmpp,ejabberd,erlang-ports,Functional Programming,Erlang,Xmpp,Ejabberd,Erlang Ports,我正在定制模块mod_muc_room,我想添加一个功能,知道用户是否在线,但只提供用户名。在该模块中,我可以找到函数is\u user\u online: is_user_online(JID, StateData) -> LJID = jlib:jid_tolower(JID), ?DICT:is_key(LJID, StateData#state.users). 我知道我必须提供用户名、服务器和资源。LJID将导致类似于{“user”,“myserver.com”,“somei
mod_muc_room
,我想添加一个功能,知道用户是否在线,但只提供用户名。在该模块中,我可以找到函数is\u user\u 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).
关于如何实现这一点,我可以提供一些建议吗?您可以使用此信息获取主机列表:
ejabberd\u配置:获取全局选项(主机)
然后使用此选项检查用户是否在线:
ejabberd\u sm:获取用户资源(用户、主机)
如果用户脱机,这将返回一个空数组