Strophe Message Sent Acknowledgment Issue

时间:2015-02-17 09:41:43

标签: javascript xmpp openfire strophe bosh

我已在基于Web的客户端界面上使用XMPP + BOSH实现了OPENFIRE。 当我发送消息时,我检查连接是否有效。如果它不是,我创建新连接然后发送。

有时会发生客户端发送消息并且未将消息传递到服务器(而不是客户端)。 因此,我需要一个强大的东西,应通知客户端此消息未到达服务器,请再次发送。

try { // sleep(2000);
    Gab.connection.send(message); >
    **var request = $msg({
        to: jid,
        "type": "get",
        id: mid
    }).c('get', {
        'xmlns': Strophe.NS.DISCO_INFO,
        'id': mid
    });**
    console.log(request); >

} catch (err) {
    alert("Internet Disconnected ! Click ok to Reconnect SEND");
    window.top.location.reload(1);
}

在上面的代码中,我调用了消息send()。然后我调用了“XMPP:xep-0184”doc中提到的函数。 但我收到的回复没有。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

不确定是什么"强大的东西"是的,但是当某人在Strophe中断开连接时,你应该从脚本中获取错误并且它将更新Strophe.Status连接状态。 Strophe每隔60秒发一个帖子(除非另有说明)。在您的代码中,您似乎正在尝试检查支持。

你应该寻找" Strophe.Status.CONNECTED"或者" Strophe.Status.ATTACHED"在发送之前,如果你担心的话。您还可以编写处理程序来管理错误。

在XEP 0184中,您必须包括:

<request xmlns='urn:xmpp:receipts'/>

所以你的msg应该是这样的(注意,你必须在每个XEP 0184中包含一个id):

$msg({
to: tojid,
from: fromjid,
type: "chat",
id: "sometrackingid"}).c('body').t("bodytxt").up().c("request", {
xmlns: "urn:xmpp:receipts"});

然后,您需要修改消息处理程序或创建单独的处理程序来管理收据。