Веб-чат XMPP: как разрешить несколько вкладок / окон?

У нас есть сайт, и мы разработали для него систему чата, используя библиотеку strophe.js и сервер ejabberd XMPP. Мы используем вложение сеанса, которое было инициировано с помощью PHP (с использованием внутренней библиотеки). Мы получаем RID и SID из сценария PHP, а затем используем вложение сеанса strophe. Указанные RID и SID хранятся в файле cookie, а значение RID в файле cookie обновляется при каждом обновлении RID на strophe.js. (Это сделано для того, чтобы мы могли повторно использовать идентификатор сеанса при обновлении страницы / переходе к другим местам на сайте)

Теперь мы планируем, чтобы он работал на нескольких вкладках / окнах.Я наблюдал за реализацией Facebook, и для каждой вкладки есть длинный запрос на опрос определенного домена. Этот домен отличается для каждой вкладки. Например, первая вкладка будет 0.86.channel.facebook.com. Вторая вкладка будет 1.86.channel.facebook.com. Насколько я понимаю, это решает проблему ограничения браузера двумя активными запросами к определенному домену. Как реализовано это решение с несколькими доменами?

Далее будут собственно сеансы чата. Сеансы чата будут разными для каждой вкладки, верно? Как пользовательский интерфейс будет синхронизироваться с каждой вкладкой, такой как Facebook? Моя идея заключается в том, что для каждого действия на собственный JID пользователя будет отправляться сообщение, содержащее действие, связанное с чатом. Например, при открытии окна чата будет отправлен следующий раздел сообщения:

<message from="my_own_jid" to="my_own_jid" type="chat">
    <body>{"jid-of-contact":"open-chat-box"}</body>
</message>

, и это будет перехвачено клиентом чата, и пользовательский интерфейс будет соответствующим образом скорректирован (в данном случае, открытие окна чата для контакта).

Есть предложения / комментарии по этой реализации?

Спасибо!

10
задан putolaruan 27 October 2010 в 09:57
поделиться