Я пытаюсь хранить постоянные общедоступные данные на сервере xmpp. В идеале пользователь сможет хранить узел на сервере, а затем извлекать этот конкретный узел позже. Все это реализовано на сервере openfire, используя strophe для переднего конца.XMPP обнаружение узла Pubsub, элемент не найден
Когда я создаю узел, я использую что-то вроде этого:
$iq({
type: 'set',
to: 'pubsub.ubuntu',
id: 'pubsubecreatenode1'
}).c('pubsub', {xmlns: Strophe.NS.PUBSUB})
.c('create', {
node: "princely_musings";
});
, которая возвращает результат строфу с создания узла, если я уже создал узел, в этом случае она возвращает:
<iq id="pubsubecreatenode1" xmlns="jabber:client" type="error"
from="pubsub.ubuntu"
to="[email protected]">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<create node="princely_musings"></create>
</pubsub>
<error code="409" type="cancel">
<conflict xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"></conflict>
</error>
</iq>
Я также опубликовать его с помощью этого:
$iq({
type: "set",
to: 'pubsub.ubuntu',
id: 'pub1'
}).c("pubsub", {
xmlns: Strophe.NS.PUBSUB
}).c("publish", {
node: "princely_musings"
}).c("item")
.c("object", {xmlns: "http://www.w3.org/2005/Atom"})
.h("somedata");
Какие также возвращает успешную строфу результата IQ.
Однако, когда я отправляюсь открывать узлы, я получаю ошибку, не найденную при запросе конкретного узла (princely_musings
), или пустой список, если не указывать узел.
$iq({
type: "get",
to: 'pubsub.ubuntu',
id: "disco1"
}).c("query", {
xmlns: Strophe.NS.DISCO_ITEMS
});
и в качестве альтернативы для конкретного узла:
.c("query", {
xmlns: Strophe.NS.DISCO_ITEMS,
node: "princely_musings"
});
Эти возвращения:
<iq id="disco1" xmlns="jabber:client" type="result"
from="pubsub.ubuntu"
to="[email protected]">
<query xmlns="http://jabber.org/protocol/disco#items"></query>
</iq>
и
<iq id="disco1" xmlns="jabber:client" type="error"
from="pubsub.ubuntu"
to="[email protected]">
<query xmlns="http://jabber.org/protocol/disco#items"
node="princely_musings">
</query>
<error code="404" type="cancel">
<item-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"></item-not-found>
</error>
</iq>
ошибки конфликта, что я возникает, когда я пытаюсь создать существующий узел привел меня к считают, что я am надлежащим образом хранил узлы на сервере, однако я не могу определить, почему мое открытие iq stanzas не находит ничего. Есть ли что-то, что мне не хватает или неправильно сконфигурировано в этих вызовах, или есть другой протокол, который я должен использовать для этой операции?
Я думаю, ваш вопрос, возможно, был немного отличается от моей первоначальной проблемы, хотя, глядя на тексте мой вопрос, я также вижу, что я использовал неправильный адрес сервера. Я редактировал вопрос, чтобы использовать правильный формат pubsub. По-прежнему важно, чтобы persist_items правильно устанавливался в конфигурации узла, иначе вы потеряете данные между сеансами. –
nmarsh