XEP - 0055 与 iOS 和 ejabberd?
Posted
技术标签:
【中文标题】XEP - 0055 与 iOS 和 ejabberd?【英文标题】:XEP - 0055 with iOS and ejabberd? 【发布时间】:2014-11-07 11:48:41 【问题描述】:我正在尝试实现由 ejabbed 支持的 XEP-0055,如supported xeps 中所示。
这是我的要求:
XMPPIQ *iq = [[XMPPIQ alloc] init];
[iq addAttributeWithName:@"type" stringValue:@"get"];
[iq addAttributeWithName:@"from" stringValue:@"testuser1@company.com"];
[iq addAttributeWithName:@"to" stringValue:@"company.com"];
[iq addAttributeWithName:@"id" stringValue:@"search1"];
XMPPElement *query = [XMPPElement elementWithName:@"query"];
[query setXmlns:@"jabber:iq:search"];
[iq addChild:query];
[self.xmppStream sendElement:iq];
我收到了这样的回复:
<iq xmlns="jabber:client" from="company.com" to="testuser1@company.com/2834146151141475281662718" type="error" id="search1">
<query xmlns="jabber:iq:search"/>
<error code="501" type="cancel">
<feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>
为什么我会收到未实现的功能? XEP官方链接description.
【问题讨论】:
【参考方案1】:在 ejabberd 中,搜索功能被委托给子域,默认情况下使用 vjud
前缀。请尝试将搜索请求发送到 vjud.company.com
。
【讨论】:
如我所想,错误出现在“to”属性中!现在可以了,非常感谢!但是我在哪里可以找到 ejabberd 实现的所有可能的服务?我的意思是 service.company.com 中“服务”的可能值? 您可以通过向“主”服务器(即company.com
)发送迪斯科项目请求(参见 XEP-0030)来获取这些项目。
是的,我这样做了几次,但我在响应中看到了 erlang 模块,例如“vcard-temp”或“carbons”,但这些是模块。我应该将模块视为服务吗?此外,我还遇到了其他一些问题。你能看看link吗?感谢您的帮助!
如果您在结果中看到 vcard-temp
,那么您可能发送了 info 请求,而不是 items 请求。
是的,使用jabber.org/protocol/disco#**items** 检索会议、pubsub 和 vjud .company.com。再次感谢!以上是关于XEP - 0055 与 iOS 和 ejabberd?的主要内容,如果未能解决你的问题,请参考以下文章
Strophe.js Jabber 搜索 (XEP-0055)
XMPP - iphone sdk 中的用户搜索?在 iphone sdk 中使用 XEP-0055?