2015-11-16 2 views
1

Я новичок в ejabberd и Strophe. Я разрабатываю приложение для веб-чата, используя strophe-клиент и ejabberd xmpp-сервер.подключение ejabberd для нескольких ресурсов с использованием Strophe

Подключения prebind в бэкэнде:

XMPPPrebind xmppPrebind = new XMPPPrebind(boshHost, xmppDomain, 
       boshUri, resource, boshPort, useSsl, debug); 
xmppPrebind.connect(username, password); 
xmppPrebind.auth(); 
SessionInfo sessionInfo = xmppPrebind.getSessionInfo(); 

Attach connection in strophe on UI: 

connection = new Strophe.Connection(BOSH_SERVICE); 
connection.attach(userjid + '@' + domain, sid, rid, onConnect); 
connection.addHandler(onMessage, null, 'message', null, null, null); 
...... 

На странице загрузки я сделать новое соединение ejabberd из серверных и получить Сиду и избавиться. Присоединение соединения с помощью sid и удаление в строфе в пользовательском интерфейсе. Он работает нормально, не проблема.

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

Как сохранить соединение на обеих вкладках или на нескольких вкладках, чтобы пользователь мог отправлять/получать сообщения на всех вкладках?

Я искал в Google, но не нашел шагов, чтобы включить эту функцию в веб-чате. Также попробуйте понять: http://xmpp.org/extensions/xep-0280.html

Я заблокирован здесь, пожалуйста, помогите. Спасибо

+0

дубликат http://stackoverflow.com/questions/33451278/keep-rid-in-sync-with-multiple-tabs-for-strophe-js-connection –

ответ

3

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

+0

Thanks Rémond, проблема решена. Я генерирую новый уникальный идентификатор для каждой вкладки. – Dharmraj

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