Miranda NG Official Community Forum

Miranda NG русскоязычный форум => Разработка => Topic started by: Ivan99 on 18 10 2020, 12:14:07

Title: Подтверждение доставки
Post by: Ivan99 on 18 10 2020, 12:14:07
Доброго времени суток!

Есть ситуация: если в ответ на отправленное сообщение приходит пакет <received>, все нормально, сообщение отображается в чате. Если же его нет, а есть <displayed> - на экране выдается ошибка "Доставка не удалась: время отправки истекло" с кнопками повтора и отмены, такие исходящие сообщения в историю переписки не попадают.

Конкретные примеры - с одной стороны Miranda-NG, на другом конце провода xabber.org. С веб клиентом (web.xabber.com) все нормально, с ведроид версией наблюдается проблема.

Я вижу что у XEP-0333: Chat Markers статус Experimental.
В настройках Миранды я отключил опцию "Отправлять сообщения медленнее, но с подтверждением", без перезапуска не вижу чтобы что-то поменялось. Разъясните, пожалуйста, с точки зрения протокола - <received и <displayed должны поддерживаться клиентом, или это все таки дополнительные возможности XMPP, отсутствие которых не должны вызывать ошибки? Как заставить работать отправку сообщений, независимо от корректности ответа от получателя?
Title: Re: Подтверждение доставки
Post by: ghazan on 19 10 2020, 15:46:04
Так displayed вовсе не означает доставку, оно означает, что сообщение показано на экране, а Миранда, конечно же, ждет именно received
Миранда поддерживает оба уведомления, только реакция на них немного разная
Title: Re: Подтверждение доставки
Post by: Ivan99 on 24 10 2020, 08:17:21
Добрый день.
То есть клиент, не отправляющий received - не полностью соответствует стандарту XMPP?

Я вижу что XEP-0333: Chat Markers в статусе Experimental, то есть его реализация не обязательна, а XEP-0184: Message Delivery Receipts в статусе Draft, написано "encouraged".

Каково поведение Миранды если клиент не возвращает <received >, как там задумано? Или это связано с тем что тот клиент неправильно формирует Initial Service Discovery (честно этот момент в дампе не смотрел и не записывал)?
Я уже нашел кнопку "отправлять обычно" / "отправлять небезопасно", это решает проблему, но кажется что эта фича либо не сохраняется после перезапуска, либо для всех контактов общая, хотя в такой ситуации надо бы ее применять только для чатов с "кривыми" клиентами.
Title: Re: Подтверждение доставки
Post by: dartraiden on 24 10 2020, 12:49:38
Строго говоря, стандарта XMPP не существует, существует лишь несколько сотен отдельных XEP-ов. Поэтому "не соответствует / не соответствует в полной мере конкретному XEP-у".
Что касается экспериментальности, то мы реализовываем те XEP-ы, которые востребованы пользователями.

Quote
"Отправлять сообщения медленнее, но с подтверждением"
Надо смотреть, поддерживается ли на том конце XEP-0184, может он не поддерживается, или поддерживается не полностью, или в реализации допущена ошибка.

В этом и проблема XMPP: куча XEP-ов и полный разнобой в их поддержке клиентами и серверами.
Title: Re: Подтверждение доставки
Post by: ghazan on 24 10 2020, 12:52:57
Каково поведение Миранды если клиент не возвращает <received >, как там задумано?
Миранда, разумеется, считает, что сообщение не доставлено, если выставлена галка проверять статус доставки

То есть клиент, не отправляющий received - не полностью соответствует стандарту XMPP?
да, типа того