Добрый день. Использую:
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 в этом конечно сильно поможет в плане удобства запроса истории, построения календарика на котором видно за какие даты есть история и т.д.