考虑我的Jabber服务器上有2个用户Alice和Bob。要添加订阅为both
的名单,我需要执行以下步骤:
Alice向Bob发送订阅请求。
当Bob收到请求时,他会批准该请求。
Bob也可能对Alice的存在感兴趣,所以他订阅了她。
Alice需要批准Bob的请求。
BUT
现在考虑一下,鲍勃不在服务器上,即他没有注册,爱丽丝试图将他加入她的名册。
以下是将要发生的步骤:
Alice向Bob发送订阅请求。
Bob未注册,没有收到请求。
Alice-> Bob订阅设置为None
。
流程结束于此。
现在,鲍勃自己注册了。 Alice如何知道Bob已经注册并且她需要再次发送subscription
请求或 Bob如何将通知推送给每个将他加入他/她的名单的用户?哪个 XEP / Ejabberd模块处理此问题?
我们调试了Whatsapp并且知道了,在这种情况下,Bob会向所有在他们的名单中添加他的用户发送通知。
答案 0 :(得分:0)
我的方式更像是,您使用哪种配置,因为在设置环境时会考虑几种情况。以下是我知道这些事情的一些方法。
有问题的服务器在连接Xmpp
客户端方面发挥着关键作用,在互联网上的情况下,DNS服务器在互连客户端方面发挥着重要作用,因此如果Bob未在当Alice发送请求时,他可能有一个记录所有互连服务的缓存服务,当他注册并且他有一个自动发现网络上的对等的Xmpp服务时(就像我说这将是用户特定的),但那里必须是发现过程中涉及的某种类型的用户设置;然后他的服务将从缓存中提取所有过去的请求,并且根据时间限制能够检索Alice的请求,然后他可以响应。这更多来自哲学观点。但如果您是开发人员,则可以为上述所有方案编写插件。如果您需要更多技术参数,我们可以讨论一下,例如您想要在Bobs服务器上编写的发现方法的类型,您可能想要放在Bobs网络上的缓存引擎的类型以及如何将其插入到Jabber服务器等,这只是我自己的两分钱。只需考虑一下类似于拥有数据包收集器并在登录时检索脱机消息的情况,但在这种情况下,它将包含Jabber服务器,数据包收集器将是您插入服务器的缓存服务引擎。
如果它是局域网,那么像检索主机记录和所有互连问题一样动态可能会有点困难,但我能想到的合理解决方案是抢占所有可用的联系人或者更好的是仍然使用特定的子网。