2011-07-15 31 views
2

我一直在使用PEP插件(在这里找到:https://github.com/flosse/strophejs-plugins/blob/master/pep/strophe.pep.js)连接到用户节点但是我有一些麻烦。当我连接块被称为我做到以下几点:strophe.js PEP处理不重视正确

XMPP.connection.send($pres()); 
XMPP.getRoster(); 
XMPP.connection.addHandler(XMPP.getPresence, null, "presence"); 

当我收到订阅的背部,从我试图访问(因此具有双向订阅)节点的JID我执行:

XMPP.connection.pep.subscribe(JID, node, 
function(){console.log("SUCCESS: Successfully subscribed to " + JID + "'s node " + node);}, 
function(){console.log("FAILURE: Unsuccessfully subscribed to " + JID + "'s node " + node);}, 
XMPP.onMessage, 
true); 

JID和节点都有效。我在控制台收到SUCCESS,但事件处理程序onMessage未正确连接。我有调试设置,所以我可以看到传入和传出节,并且我没有收到任何节点(我知道这是定期发布的内容)。我不太清楚为什么会发生这种情况。

如果我删除一切从连接块,只需手动创建从Web控制台双向订阅,然后它工作得很好,现在空块添加XMPP.connection.pep.subscribe。

我曾尝试多种PEP和发布订阅插件,并获得相同的行为。我在路障,非常感谢任何人的输入!谢谢!您使用的

回答

0

哪个服务器?

它看起来就像你试图做一个明确的认购,而不是更加正常的隐PEP订阅。许多服务器将只支持隐式订阅,其中您将[node URI]+notify添加到您的caps信息中。

此外,一些服务器有,你需要明确地发送存在谁刚刚订阅了你,而不是正确地给他们当前的存在,当你同意他们的订阅请求的服务器的人的错误。这个bug会阻碍隐式订阅。

+0

我正在运行ejabberd ...我相信它是版本2.1.8。我会尝试隐含的PEP订阅,并确保我向订阅我的人发送状态。 –