Author Topic: Дубликаты сообщений при использовании XEP-0136  (Read 17540 times)

0 Members and 1 Guest are viewing this topic.

Offline Oneiron

  • Jr. Member
  • **
  • Posts: 62
Ой-ей... и какой у него временной порог? 0.1 секунды? :(
Синхронизировать время на всех машинах... бр-р-р, задачка не то чтобы трудная, но муторная.
И никаким костылем это подпереть не удастся? Как-то же с этим справляется Vacuum IM, дублей не плодит.

И еще одно, как мне историю-то сортировать? Она неправильно приходит, зараза :(
« Last Edit: 06 10 2014, 18:11:36 by Oneiron »
 

Offline ghazan

1 секунда.
История должна автоматом сортироваться по времени поступления.

не исключено, что vacuum вообще не держит локальной копии сообщений и всегда тупо грузит все с сервера
 

Offline Oneiron

  • Jr. Member
  • **
  • Posts: 62
Дык в том-то и дело, что у меня она сортируется не по времени поступления а хй знает как... надо "хлопать окнами", чтобы оно нормально отрабатывало.
Скриншоты прилагаю.
На скриншоте "До" - то, что я получаю сразу же после открытия окна (история скачивается с сервера)
На скриншоте "После" - то, что отображается после того как я закрою окно и открою его снова.
Обратите внимание: метки времени верные, и поэтому все сортируется... но почему-то не сразу.

 

Offline ghazan

Дык в том-то и дело, что у меня она сортируется не по времени поступления а хй знает как... надо "хлопать окнами", чтобы оно нормально отрабатывало.
Скриншоты прилагаю.
На скриншоте "До" - то, что я получаю сразу же после открытия окна (история скачивается с сервера)
На скриншоте "После" - то, что отображается после того как я закрою окно и открою его снова.
Обратите внимание: метки времени верные, и поэтому все сортируется... но почему-то не сразу.
ok, глянем.

кстати, о птичках - ты MAM не смотрел (XEP-0313)? есть его поддержка в сервере? если бы его поставить, можно было бы кошерное решение сделать, с хранением идентификаторов, исключающее дубли
 

Offline Magic

В опенфайре, к сожалению, только 0136 поддерживается, плагином мониторинга.
А как получаются дубли, сервер разве не передает с сообщениями их таймштампы?
По идее же unix timestamp для сообщения не привязан к синхронизации времени, он записывается в базу 1 раз при сохранении сообщения?

Думаю тоже у себя сделать поддержку Xep-0136, но с такими спецэффектами ну ее нафиг(
Хоть среда и доменная, время отсинкано, но стремно.
Если ручки растут из попки - это ножки
 

Offline Oneiron

  • Jr. Member
  • **
  • Posts: 62
MAM сейчас поддерживается только Prosody, насколько я знаю. Ну и еще есть какой-то "фиг-знает-работает-ли" модуль для ejabberd. Ни то, ни другое мне не подходит, поскольку любая фигня будет привязана ко мне. Опенфайром-то кто хош рулить сможет.

Время синхронизировал на всем домене с 0.ru.pool.ntp. В домене у всех компьютеров время одно и то же, но! Дубли... остались.
Текущее время на \\мой.комп.local равно 07.10.2014 16:18:49
Текущее время на \\сервер.джаббер.local равно 07.10.2014 16:18:49

Post Merge: 08 10 2014, 11:41:47
Доступ к серверу по прежнему есть, так что можно тестить.
« Last Edit: 08 10 2014, 11:41:47 by Oneiron »
 

Offline Oneiron

  • Jr. Member
  • **
  • Posts: 62
ghazan, какие-нибудь обновления по моему вопросу? Пожа-а-а-алуйста :)
 

Offline de1eted

  • Newbie
  • *
  • Posts: 7
У меня заработало норм.
Просто удалил локальную историю переписки.
С других девайсов история подгружается только после релогона. Возможно имеет смысл реализовать подгрузку через таймаут, но и так хорошо!

 Миранда используется как корпоративный мессенджер, контакты на серваке, OpenFire.
 

Offline Magic

ok, глянем.

кстати, о птичках - ты MAM не смотрел (XEP-0313)? есть его поддержка в сервере? если бы его поставить, можно было бы кошерное решение сделать, с хранением идентификаторов, исключающее дубли
В Openfire 3.11.0 планируется поддержка MAM, судя по багтрекеру:
https://igniterealtime.org/issues/browse/OF-862

Можно ли в будущем ждать в миранде?
Если ручки растут из попки - это ножки
 

Offline ghazan

MAM - разумеется. как только появится сервер, на котором это можно тестить
что-то ejabberd не мычит и не телится пока
 

Offline abyss

  • Newbie
  • *
  • Posts: 10
Добрый день. Использую:
Code: [Select]
Miranda NG Version: 0.95.4 build #13028
Jabber.dll v.0.11.0.4 [22 Apr 2015 0:45:08] - Jabber protocol

совместно с Openfire 3.10.3 и monitoring plugin 1.4.5 в окружении AD, все клиенты и серверы синхронизируются с контроллерами домена, при мониторинге расхождение сотые/тысячные доли секунды между клиентом и сервером.
Но всё равно сообщения задваиваются. При просмотре истории таймштампы одинаковые (до секунд)
Судя по логу, сервер отдаёт таймштамп с точностью до тысячных секунд. И если мне не изменяет память, миранда тоже хранит таймштампы до тысячных. В результате не удивительно расхождение: таймштамп в xmpp не передаётся, соответственно назначенный мирандой всегда не совпадает с назначенным сервером (на передачу данных хоть тысячные секунды да тратятся)

Соответственно несколько вопросов:

1. Можно ли сделать в процедуре сравнения локальной истории и истории запрошенной с сервера округление до секунд?
2. Можно ли настройками протокола и комбинацией плагинов HistorySweeperLight и NoHistory сделать хранение истории только на сервере?
Я на самом деле пробовал это сделать сам, но если использовать NoHistory, то миранда вообще не запрашивает историю с сервера. А при использовании HistorySweeperLight происходит конфликт, т.к. при выходе история чистится, а при входе не забирается, т.к. протокол хранит(LastCollection) время на которое уже "типа получена" история с сервера и повторно её не забирает.

Так же подтверждаю проблему с неупорядочиванием сообщений в окне диалога при подгрузке истории. Даже была такая ситуация: пришло сообщение, я щелкаю по всплывшему окну, открывается окно диалога, запросилась история с сервера и вытеснила свежеполученное сообщение. Пришлось "хлопать окнами".

Кстати в monitoring plugin 1.4.7 для Openfire реализован MAM xep-0313, проверил, работает в Gajim. Но у меня остаётся вопрос, будет ли MAM панацеей от задваивания, т.к. id сообщений можно узнать только при запросе архива и соответственно не получится их сравнивать на предмет дубликатов, т.к. в архиве миранды этих id не будет.

Мне кажется нужно какое-то архитектурное решение хранения истории только на сервере и запрос по необходимости. MAM в этом конечно  сильно поможет в плане удобства запроса истории, построения календарика на котором видно за какие даты есть история и т.д.
 

Offline de1eted

  • Newbie
  • *
  • Posts: 7
abyss, и я с такой же проблемой ковырялся.
Так что, +1.
Есть Xabber, который нормально с историей работает, но под Андроид.
Под виндой есть Vacuum-im, но там бедные настройки и выглядит не оч.
 

Offline Davis

+1
возьмите меня в компанию.
Такая же ситуация. Домен, время одинаковое, в истории дубли.

И еще явно связанный вопрос.
0.95.5 alpha build #15796
Первое после запуска открытие любого контакта отображает историю за время с прошлого запуска, т.е. за вчерашний день. Всю. Закрыть-открыть окно - начинают действовать настройки журнала беседы(60 минут). И так отдельно по каждому контакту.
Как следствие тяжелый случай: я обновляю саму миранду через политику. при этом удаляю и профиль, в автозапуск прописаны настройки и профиль создается автоматом. Но после этого при открытии любой беседы происходит загрузка и отображение ВСЕЙ истории контакта. Пока у меня тестовый период и то это у "болтливых" контактов занимает кучу времени.

Пока дописал сохранение .dat файла при обновлениях, но хотелось бы, конечно как-нибудь красиво жить.
Спасибо
 

Offline Davis

А тут бывают разработчики?
 

Offline Evgenyatam

  • Newbie
  • *
  • Posts: 18
А тут бывают разработчики?
иногда бывают, ghazan - один из них.