2016-02-03 2 views
1

Я работаю над ejabberd уже довольно давно, я заменяю сторонний чат Infra на Ejabberd inhouse. Поскольку это был производственный переключатель, поэтому нам нужно поддерживать предыдущие сообщения чата, переключаясь на ejabberd.ejabberd syncing сообщение из архива mysql

Итак, я создал все реестры, перенесенные пользователями в ejabberd, которые все работают нормально, теперь главная проблема, с которой я столкнулась, - это миграция сообщений. Я использую mysql для пользователей, списков и сообщений. Я запускаю скрипт, который напрямую подталкивает данные к ejabberd mysql из предыдущего чата.

Но когда я подключаюсь к пользователю, я могу видеть новые сообщения чата, которые были отправлены через ejabberd, но перенесенные чаты для того же пользователя не видны и не передаются обратно клиенту.

Может кто-то помочь здесь?

Вот две записи, которые я вложил в mysql, первая - запись ejabberd, а другая - вручную, клиент может синхронизировать первый, но не другой.

username timestamp peer bare_peer xml txt id kind nick created_at 
xyz-customer 1454573488523175 [email protected] [email protected] "<message from='[email protected]/2131165549e1bc6553-32b9-4ec4-92bd-c9ed80fb5374' to='[email protected]' xml:lang='en' id='oG3Vb-568' type='chat'><body> CnsfjffsjJ</body><thread>90275196-0096-4bb4-a95d-d72ea5238f74</thread><request xmlns='urn:xmpp:receipts'/><delay xmlns='urn:xmpp:delay' stamp='2016-02-04T08:11:27.194+00:00' from='[email protected]/2131165549e1bc6553-32b9-4ec4-92bd-c9ed80fb5374'/><markable xmlns='urn:xmpp:chat-markers:0'/><request xmlns='urn:urbanclap:request' requestId=''/><active xmlns='http://jabber.org/protocol/chatstates'/></message>" " CnsfjffsjJ" 208044 chat  "2016-02-04 08:11:28" 

xyz-customer 1454570506606317 [email protected] [email protected] "<message from='[email protected]' to='[email protected]' xml:lang='en' id='I5sO7-2' type='chat'><body>GB hard</body><request xmlns='urn:xmpp:receipts'/><markable xmlns='urn:xmpp:chat-markers:0'/><active xmlns='http://jabber.org/protocol/chatstates'/></message>" "GB hard" 208045 chat NULL "2016-02-04 07:21:46" 

ответ

0

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

Обратите внимание, что таблица для отправки сообщений в автономном режиме - это только регистрация нового пользователя. Это не способ добавить сообщения для доставки пользователю в текущем сеансе. Это означает, что вы не можете синхронизировать две запущенные платформы, просто записывая в таблицу сообщений MySQL. Вам нужно будет на самом деле маршрутизировать сообщения, написав собственный плагин ejabberd.

+0

Hi Mickael, я не пытаюсь отправить в автономный режим, я пытаюсь направить сообщения на другой платформе в таблицу архивов mysql Ejabberd и выполнять эти сообщения, чтобы синхронизировать их, когда пользователь подключается к сети. – mohit3081989

+0

Тогда, как я уже упоминал, письмо в архиве или автономном хранилище в MySQL не будет направлять сообщение через ejabberd. Вам нужно написать настраиваемый плагин синхронизации. –

+0

Привет, Микаэль, спасибо за предложение, но не могли бы вы рассказать подробнее, или вы можете сказать мне, какой конкретный модуль настраивать для загрузки сообщений из mod_archive, я думал, что если в таблице mod_archive есть все сообщения с форматом, который понимает ejabberd, это должен быть в состоянии прочитать его правильно, я не могу понять, что ограничивает его из него. – mohit3081989

Смежные вопросы