Author Topic: Подтверждение доставки  (Read 3992 times)

0 Members and 1 Guest are viewing this topic.

Offline Ivan99

  • Newbie
  • *
  • Posts: 9
Подтверждение доставки
« on: 18 10 2020, 12:14:07 »
Доброго времени суток!

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

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

Я вижу что у XEP-0333: Chat Markers статус Experimental.
В настройках Миранды я отключил опцию "Отправлять сообщения медленнее, но с подтверждением", без перезапуска не вижу чтобы что-то поменялось. Разъясните, пожалуйста, с точки зрения протокола - <received и <displayed должны поддерживаться клиентом, или это все таки дополнительные возможности XMPP, отсутствие которых не должны вызывать ошибки? Как заставить работать отправку сообщений, независимо от корректности ответа от получателя?
 

Offline ghazan

Re: Подтверждение доставки
« Reply #1 on: 19 10 2020, 15:46:04 »
Так displayed вовсе не означает доставку, оно означает, что сообщение показано на экране, а Миранда, конечно же, ждет именно received
Миранда поддерживает оба уведомления, только реакция на них немного разная
 

Offline Ivan99

  • Newbie
  • *
  • Posts: 9
Re: Подтверждение доставки
« Reply #2 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 (честно этот момент в дампе не смотрел и не записывал)?
Я уже нашел кнопку "отправлять обычно" / "отправлять небезопасно", это решает проблему, но кажется что эта фича либо не сохраняется после перезапуска, либо для всех контактов общая, хотя в такой ситуации надо бы ее применять только для чатов с "кривыми" клиентами.
 

Offline dartraiden

Re: Подтверждение доставки
« Reply #3 on: 24 10 2020, 12:49:38 »
Строго говоря, стандарта XMPP не существует, существует лишь несколько сотен отдельных XEP-ов. Поэтому "не соответствует / не соответствует в полной мере конкретному XEP-у".
Что касается экспериментальности, то мы реализовываем те XEP-ы, которые востребованы пользователями.

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

В этом и проблема XMPP: куча XEP-ов и полный разнобой в их поддержке клиентами и серверами.
« Last Edit: 24 10 2020, 13:05:52 by dartraiden »
 

Offline ghazan

Re: Подтверждение доставки
« Reply #4 on: 24 10 2020, 12:52:57 »
Каково поведение Миранды если клиент не возвращает <received >, как там задумано?
Миранда, разумеется, считает, что сообщение не доставлено, если выставлена галка проверять статус доставки

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