Strophe 消息发送确认问题

Strophe Message Sent Acknowledgment Issue

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

有时会发生这样的情况,即客户端发送了一条消息,但未将其传送到 服务器(不是对面的客户端)。 所以为此我需要一个强大的东西来通知客户这条消息没有到达服务器,请重新发送。

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);
}

在上面的代码中,我调用了消息发送()。之后我调用了 "XMPP:xep-0184" 文档中提到的函数。 但我没有收到任何回复。

提前致谢。

不确定 "strong thing" 是什么,但是当有人在 Strophe 中断开连接时,您应该从脚本中得到错误信息,它会更新 Strophe.Status 连接状态。 Strophe 每 60 秒发送一个 post(除非另有说明)。在您的代码中,您似乎正在尝试检查支持。

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

在 XEP 0184 中,您必须包括:

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

因此您的消息应该如下所示(请注意,您必须包含每个 XEP 0184 的 ID):

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

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