Strophe.js Jabber 搜索 (XEP-0055)

Posted

技术标签:

【中文标题】Strophe.js Jabber 搜索 (XEP-0055)【英文标题】:Strophe.js Jabber Search (XEP-0055) 【发布时间】:2013-09-11 21:07:49 【问题描述】:

我试图弄清楚如何使 Strophe.js 与 XEP-0055 插件一起工作。所以我想我首先必须确定服务支持哪些搜索字段,然后我必须发送实际请求:

<iq type='set'
    from='romeo@montague.net/home'
    to='characters.shakespeare.lit'
    id='search2'
    xml:lang='en'>
  <query xmlns='jabber:iq:search'>
    <last>Capulet</last>
  </query>
</iq>

但是如何将其转换为 Strophe.js 查询?这是我的尝试:

$iq(to: 'characters.shakespeare.lit', 
from: 'romeo@montague.net/home', 
type: 'set', 
id: 'search2').c('query', xmlns: 'jabber:iq:search').t("last", search_query)

我究竟需要发送什么,例如

to: characters.shakespeare.lit - 是我正在使用的 XMPP 服务的地址吗?例如。 jabber.org

来自:romeo@montague.net/home - 这是我在服务器上的 ID 吗?

【问题讨论】:

【参考方案1】:
    var iq = $iq(
          type: 'set',
          id: 'search2',
          to: 'vjud.yourserver.org'
    )
.c('query', xmlns: 'jabber:iq:search')
.c('x', xmlns: 'jabber:x:data', type:'submit')
.c('field', var: 'first').c('value','Rub*').up(); 
conn.sendIQ(iq);

注意:收件人:characters.shakespeare.lit

不是您的服务器,而是 vcard 服务搜索。

.c('field', var: 'first') 如果有任何错误将 var 更改为 'var'

【讨论】:

这个有效!但是有什么方法可以同时搜索多个字段吗? 是的,只需添加新字段。

以上是关于Strophe.js Jabber 搜索 (XEP-0055)的主要内容,如果未能解决你的问题,请参考以下文章

如何检测与 Strophe.js 断开的会话?

Strophe.js - 如何获得一组名册及其成员?

strophe.js 聊天状态通知

如何使用 Jabber-net 库实现 XEP-0012

strophe js MUC房间

XEP-0055 的错误 400 错误请求?