我对XMPP并不陌生,最近决定尝试在移动平台上制作IM。关于XMPP,我有几个问题,在最近阅读之后,我似乎找不到答案(我正在考虑将ejabberd或Tigase用作服务器,因此以下问题将假设服务器端是其中之一):
我已经读过,在XMPP中,将另一个用户添加到花名册中是由客户端向服务器发送花名册设置请求完成的,然后服务器将向订阅方客户端添加订阅状态为“从”和“到”的花名册项目和分别添加客户端。为了使花名册项目的预订值变为“两者”,要添加的用户需要接受发送的请求。这样对吗?
以我的理解,一个用户可以通过XMPP中的JID识别并添加另一个用户,如果我将此问题放在WhatsApp的情况下,那就是用户的电话号码。这样对吗?
是否可以使服务器自定义客户花名册?例如,服务器将使用IM处理所有客户端,并根据某种逻辑(例如,他们可能彼此认识的人)而不是仅由用户添加的联系人返回花名册?为了更清楚地阐明这一点,就像您可能认识的Facebook人士一样。因此,在这种情况下,每次客户端登录并请求花名册时,服务器都会返回用户可能会发现要与之交谈的人员的列表。
根据以前的理解,假设A发送了添加B的请求,但B尚未接受,则用户A是否可以查看另一个用户B是否在线?在B接受请求之前向B发送任何消息怎么样?
谢谢你的帮助!
我已经读过,在XMPP中,将另一个用户添加到花名册中是由客户端向服务器发送花名册设置请求完成的,然后服务器将向订阅方客户端添加订阅状态为“从”和“到”的花名册项目和分别添加客户端。为了使花名册项目的预订值变为“两者”,要添加的用户需要接受发送的请求。这样对吗?
有两个位。一种是添加到名册中,另一种是获得状态订阅。通过发送在线状态订阅请求来建立在线状态订阅(这样做,联系人将自动添加到名册中)。另一方面,名册集可操纵您的名册,但不会引起状态订阅。
以我的理解,一个用户可以通过XMPP中的JID识别并添加另一个用户,如果我将此问题放在WhatsApp的情况下,那就是用户的电话号码。这样对吗?
对于XMPP,是的,寻址是通过JID完成的。我不知道Whatsapp的寻址方式如何。
是否可以使服务器自定义客户花名册?例如,服务器将使用IM处理所有客户端,并根据某种逻辑(例如,他们可能彼此认识的人)而不是仅由用户添加的联系人返回花名册?为了更清楚地阐明这一点,就像您可能认识的Facebook人士一样。因此,在这种情况下,每次客户端登录并请求花名册时,服务器都会返回用户可能会发现要与之交谈的人员的列表。
在封闭环境中使用服务器自定义将是可能的。它不能在公共网络上工作,因为状态订阅是双向的,您最终将获得一类看不到的人,当他们在线时。另一方面,您可以轻松地设置一个用户搜索服务,该服务将返回建议,而客户可以随意添加它们。
根据以前的理解,假设A发送了添加B的请求,但B尚未接受,则用户A是否可以查看另一个用户B是否在线?在B接受请求之前向B发送任何消息怎么样?
一旦B接受了A的状态订阅,A就只能看到B是否在线。在标准XMPP中,您不需要状态订阅来发送消息(尽管某些部署可能会更改此设置,例如Google的)。
有关这些类型问题的概述,建议您阅读XMPP权威指南(O'Reilly)(免责声明,我是其中之一),或阅读相关的RFC(6120、6121、6122)和XEP系列(自然,我认为这本书更容易阅读)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句