我有一个ejabberd服务器jabber.domain.com网站,其中包含一个用python编写的xmpp组件(使用sleekxmpp)在presence.domain.com网站. 在
我希望组件在每次客户机将其状态从“可用”更改为“不可用”时收到通知,反之亦然。在
客户本身没有任何联系人。在
目前,我已经将我的客户设置为将可用的状态节发送到admin@presence.domain.com,我确实收到他们的在线/离线状态通知。但我觉得这不是正确的方法。在
我希望客户不会知道presence.domain.com网站,它们只会连接到jabber.domain.com网站组件应该以某种方式得到服务器关于客户端存在的通知。在
有办法吗? 我的组件设置正确吗?或者我应该考虑使用xmpp插件/模块等等。。在
谢谢
为此编写一个自定义的ejabberd模块并不困难。它将需要注册到ejabberd中的状态更改钩子,并在每个存在包上向您的外部组件路由一个通知。在
有一对钩子“set_presence_hook”和“unset_presence_hook”,您的模块可以注册到它们,当用户开始/结束会话时,它们会得到通知。在
如果您需要跟踪其他状态,还有一个钩子“c2s_update_presence”,它会在用户发送的任何状态包上触发。在
另一种不使用自定义模块的可能性是使用共享名册。添加admin@presence.domain.com所有用户的共享名册,但在这种情况下,他们将看到此项目反映在他们的名册上。在
组件有可能以与用户完全相同的方式订阅用户的存在。用户也可以订阅组件的存在。您只需遵循通常的模式,即组件/用户发送
subscribe
类型的<presence/>
,用户/组件可以通过发送subscribed
类型的<presence/>
来接受。在也可以让用户直接向组件发送状态信息。在
不需要编写自定义钩子或创建代理用户。在
相关问题 更多 >
编程相关推荐