【问题标题】:strophe.js PEP handler not attaching properlystrophe.js PEP 处理程序未正确附加
【发布时间】:2011-07-15 00:32:04
【问题描述】:

我一直在使用 PEP 插件(可在此处找到:https://github.com/flosse/strophejs-plugins/blob/master/pep/strophe.pep.js)连接到用户节点,但我遇到了一些问题。当我的连接块被调用时,我执行以下操作:

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 和 pubsub 插件并获得相同的行为。我遇到了障碍,非常感谢任何人的意见!谢谢!

【问题讨论】:

    标签: javascript xmpp publish-subscribe strophe pep


    【解决方案1】:

    您使用的是哪个服务器?

    看起来您正在尝试进行显式订阅,而不是更正常的隐式 PEP 订阅。许多服务器只支持隐式订阅,您可以将[node URI]+notify 添加到您的caps 信息中。

    另外,一些服务器存在一个错误,您需要明确地向刚刚订阅您的人发送状态,而不是在您批准他们的订阅请求时服务器正确地向他们提供您当前的状态。这个错误会阻碍隐式订阅。

    【讨论】:

    • 我正在运行 ejabberd ...我相信它是 2.1.8 版。我将尝试隐式 PEP 订阅,并确保我向订阅我的人发送出席信息。
    猜你喜欢
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    相关资源
    最近更新 更多