最新の Smackx トランクを使用して、pubsub ノードを取得してサブスクライブしようとしています。ただし、openfire からエラーが返されます: item not found (404)。
私は ColdFusion から Java オブジェクトをインスタンス化しているので、私のコード スニペットはおかしく見えるかもしれませんが、誰かが私が忘れていたことを教えてくれるかもしれません。
ノードの作成方法は次のとおりです。
ftype = createObject("java", "org.jivesoftware.smackx.pubsub.FormType");
cform = createObject("java", "org.jivesoftware.smackx.pubsub.ConfigureForm").init(ftype.submit);
cform.setPersistentItems(true);
cform.setDeliverPayloads(true);
caccess = createObject("java", "org.jivesoftware.smackx.pubsub.AccessModel");
cform.setAccessModel(caccess.open);
cpublish = createObject("java", "org.jivesoftware.smackx.pubsub.PublishModel");
cform.setPublishModel(cpublish.open);
cform.setMaxItems(99);
manager = createObject("java", "org.jivesoftware.smackx.pubsub.PubSubManager").init(XMPPConnection);
myNode = manager.createNode("subber", cform);
そして、これが私がそれに到達しようとしている方法です(コードの別のセクションで):
manager = createObject("java", "org.jivesoftware.smackx.pubsub.PubSubManager").init(XMPPConnection);
myNode = manager.getNode("subber");
ノードを作成するとすぐに、次のように公開できるようです。
payload = createObject("java", "org.jivesoftware.smackx.pubsub.SimplePayload").init("book","pubsub:test:book","<book xmlns='pubsub:test:book'><title>Lord of the Rings</title></book>");
item = createObject("java", "org.jivesoftware.smackx.pubsub.Item").init(payload);
myNode.publish(item);
ただし、私のコードにエラーを引き起こしているのは getNode() 呼び出しです。
openfire サーバーで使用されている DB をチェックして、ノードが作成されていることを確認しました。そこにそれらがあり、葉ノードなどとして適切に属性付けされているのを見ることができます。
何かアドバイス?XMPP と ColdFusion で何かやっている人はいますか? 私はCFとSmackでメッセージを送受信することに成功しましたが、pubsubはまだ機能していません:)
ありがとう!