Я реализовал OPENFIRE с XMPP + BOSH на моем веб-интерфейсе. Когда я отправляю сообщение, я проверяю, является ли соединение вживую или нет. Если он не является живым, я создаю новое соединение, а затем отправляю его.Сообщение о выпуске Strophe Message
Иногда бывает, что клиент отправляет сообщение, и он не доставляется на сервер (не напротив клиента). Так что для этого мне нужна сильная вещь, которая должна сообщить клиенту, что это сообщение не дошло до сервера, пожалуйста, отправьте еще раз.
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". Док. , но никакого ответа я не получил.
Заранее спасибо.
Я всегда проверяю перед отправкой сообщения ниже условий. Gab.connection.connected == false || Gab.connection.authenticated == false Моя веб-страница не узнает о том, когда она потеряла соединение. Поэтому когда пользователь пытается отправить сообщение, я проверяю, есть ли соединение или нет. Иногда случается, что мое соединение затерялось, и сообщение отправлено успешно и никогда не доходит до сервера и конечного пользователя. В этом случае он не показал мне никаких ошибок или предупреждений. Моя политика Idle Connections для клиентов установлена в 5 секунд. –
Вот почему я пытаюсь выяснить, мое сообщение успешно отправлено на сервер или нет? –
5 секунд - это очень короткий период ожидания. Это нормальная настройка сайта? Я запускаю сайт с тысячами подключенных пользователей с обычным таймаутом (60 секунд) и не имеет проблем с подключением. Думаю, вам нужно посмотреть, почему ваши связи так часто теряются. –