2014-10-03 24 views
2

我很新的XMPP和最近决定争取在移动平台的IM。关于XMPP我有我似乎无法最近的读数后找到答案(我想用ejabberd或Tigase作为服务器的,所以下面的问题将被假设服务器端就是其中之一)几个问题:XMPP名册地位,未知用户之间的自定义的名单和通讯

  1. 我读过,在XMPP协议中,加入其他用户进入名单是由客户端发送名册设置请求到服务器完成,那么服务器将添加具有“从”的订阅状态名册项目和“到”的请求客户端和客户端分别添加。在其他情况下,名单项目的订购价值变为“两者”,被添加的用户需要接受发送的请求。它是否正确?

  2. 在我的理解中,一个用户通过XMPP中的JID识别并添加另一个用户,如果我把它放入WhatsApp的情况下,它是用户的电话号码。它是否正确?

  3. 是否有可能使服务器定制客户的名单?例如,服务器将使用IM处理所有客户端,并根据某些逻辑返回一个名单,例如,他们可能彼此认识的人,而不是只有用户添加的联系人?为了更清楚地阐明这一点,它就像你可能认识的Facebook人。因此,在这种情况下,每次客户端登录并请求名单时,服务器都会返回用户可能会发现想要与之通话的人员列表。

  4. 根据以前的理解,用户A是否有可能看到另一个用户B是否在线,因为A发送了添加B的请求,但是B尚未接受?在B接受请求之前如何向B发送任何消息?

感谢您的帮助!

回答

4

我读过,在XMPP协议中,加入其他用户进入名单是由客户端发送名册设置请求到服务器完成,那么服务器将添加一个名册项目以“从”和“申购状态到'分别添加到请求客户端和客户端。在其他情况下,名单项目的订购价值变为“两者”,被添加的用户需要接受发送的请求。它是否正确?

有两位。一个是增加名册,另一个是获得订阅。通过发送状态订阅请求来建立状态订阅(并且这样做,联系人将被自动添加到名册中)。另一方面,花名册可以操纵你的花名册,但不会导致签名。

在我的理解中,一个用户通过XMPP中的JID识别并添加另一个用户,如果我把它放入WhatsApp的情况,它是用户的电话号码。它是否正确?

对于XMPP的情况,是的,使用JID进行寻址。我不知道Whatsapp的编址如何工作。

是否有可能使服务器定制客户的名单?例如,服务器将使用IM处理所有客户端,并根据某些逻辑返回一个名单,例如,他们可能彼此认识的人,而不是只有用户添加的联系人?为了更清楚地阐明这一点,它就像你可能认识的Facebook人。因此,在这种情况下,每次客户端登录并请求名单时,服务器都会返回用户可能会发现想要与之通话的人员列表。

在封闭的环境中,服务器定制可能是可能的。它不适用于公共网络,因为在线订阅是双向的,您最终会得到一个在线时无法看到的人员名单。另一方面,您可以轻松设置一个用户搜索服务来返回建议,客户可以随意添加它们。

从以前的理解,有可能用户A可以看到另一个用户B是否在线,因为A发送了添加B的请求,但是B还没有接受?在B接受请求之前如何向B发送任何消息?

一旦B接受了A的在线订阅,A只能看到B是否在线。在标准的XMPP中,你不需要状态订阅来发送消息(尽管有些部署可能会改变这一点,例如Google的做法)。

对于这些类型的问题,我建议您阅读XMPP The Definitive Guide (O'Reilly)(免责声明,我是其中一位作者)或相关RFC(6120,6121,6122)和XEP系列(自然,I认为这本书更容易获得)。

+0

感谢您的回答,它帮助我了解了很多! – alanlo 2014-10-07 07:00:52

+0

不客气。 – Kev 2014-10-08 07:56:30

+0

我已经在iOS中创建了一个应用程序,并从xmpp连接并提取了用户,并且也能够获得离线消息。现在,我需要使用XEP-0313获取特定用户的对话,如何实现XEP-0313 – 2017-01-06 11:13:02