Javascript Strophe消息发送确认问题

Javascript Strophe消息发送确认问题,javascript,xmpp,openfire,strophe,Javascript,Xmpp,Openfire,Strophe,我已经在基于Web的客户端界面上用XMPP+BOSH实现了OPENFIRE。 发送邮件时,我会检查连接是否处于活动状态。如果不是活动状态,我会创建新连接,然后发送 有时,客户端发送一条消息,但它没有被传递到服务器(而不是相反的客户端)。 所以,我需要一个强大的东西,应该通知客户端,这条消息并没有到达服务器,请再次发送 try{//sleep(2000); Gab.connection.send(消息);> **var请求=$msg({ 致:jid, “类型”:“获取”, id:中 }).c('

我已经在基于Web的客户端界面上用XMPP+BOSH实现了OPENFIRE。 发送邮件时,我会检查连接是否处于活动状态。如果不是活动状态,我会创建新连接,然后发送

有时,客户端发送一条消息,但它没有被传递到服务器(而不是相反的客户端)。 所以,我需要一个强大的东西,应该通知客户端,这条消息并没有到达服务器,请再次发送

try{//sleep(2000);
Gab.connection.send(消息);>
**var请求=$msg({
致:jid,
“类型”:“获取”,
id:中
}).c('get'{
“xmlns”:Strophe.NS.DISCO_信息,
“id”:中
});**
console.log(请求);>
}捕捉(错误){
警报(“Internet已断开连接!单击“确定”重新连接发送”);
窗口。顶部。位置。重新加载(1);
}
不确定什么是“强项”,但当有人在Strophe中断开连接时,您应该会从脚本中获得错误,它将更新Strophe.Status连接状态。Strophe每60秒发送一次post(除非另有规定)。在您的代码中,似乎您正在尝试检查支持

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

在XEP 0184中,您必须包括:

因此,您的msg应该如下所示(注意,根据XEP 0184,您必须包含一个id):


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

在发送消息之前,我总是检查以下条件。Gab.connection.connected==false | | Gab.connection.authenticated==false我的网页不知道它何时失去了连接。所以当任何用户试图发送消息时,我都会检查连接是否存在。有时,我的连接丢失,消息成功发送,并且从未到达服务器和最终用户。在这种情况下,它没有向我显示任何错误或警告。我的客户端空闲连接策略设置为5秒。这就是为什么我试图弄清楚,我的消息是否成功发送到服务器??5秒是非常短的超时时间。这是正常的网站设置吗?我正在运行一个有一千个正常超时(60秒)连接用户的站点,并且没有任何连接问题。我想你们需要更仔细地看看为什么你们的连接如此频繁地丢失。我发现新的问题是,当我刷新我的页面时,它在我的openfire面板中得到了双会话。刷新次数*用户数=列表中的会话列表。存储rid&sid并检测它们是否存在,然后在刷新/更改页面(如果存在)时在连接上使用“附加”。
$msg({
to: tojid,
from: fromjid,
type: "chat",
id: "sometrackingid"}).c('body').t("bodytxt").up().c("request", {
xmlns: "urn:xmpp:receipts"});