Как бы вы зеркалировали сеансы привязки XMPP на несколько вкладок или окон в стиле facebook, okCupid и т. д.

Я реализовал функцию обмена мгновенными сообщениями / чата в Интернете, используя привязку http и ejabberd. Для ленивых вот короткая версия моего вопроса:

Как бы вы подошли к реализации веб-клиента чата XMPP, который мог бы отображаться в нескольких окнах браузера одновременно, каждое из которых отображало бы идентичное представление открытых чатов?

Подробный бред для интересующихся:

Одним из возможных решений было бы просто позволить каждой вкладке управлять своим собственным соединением. XMPP имеет достойную поддержку для нескольких клиентов, поэтому пусть он выполняет маршрутизацию. У меня есть как минимум 2 проблемы с этим решением. 1 — это очевидное увеличение потребления полосы пропускания, которое это может вызвать. 2 — это текущее отсутствие поддержки нескольких клиентов с одним и тем же JID для подключения к комнатам MUC в ejabberd. Это, по-видимому, будет реализовано для 3.1, но для меня это серьезная проблема в ее нынешнем виде.

Первоначально я задавался вопросом, может ли быть задействована какая-то флеш-магия, но кажется, что swf на странице используется только для воспроизведения звуковых эффектов уведомлений. Вы можете подтвердить это, используя firebug или аналогичный инструмент для удаления тега внедрения. Функция чата по-прежнему работает.

Это в основном оставляет мне файлы cookie как единственный способ поделиться между вкладками. В этом сценарии основная вкладка будет сбрасывать все сообщения в файлы cookie, которые можно будет опрашивать с других вкладок. Мне это кажется довольно нелепым, поскольку частота опроса должна быть исключительно высокой, чтобы избежать задержки. Что произойдет, если «главное» окно будет закрыто?

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


person Ollie Edwards    schedule 15.07.2010    source источник
comment
Я делал подобные вещи раньше, но я не уверен, что понимаю ваш вопрос. Вы имеете в виду разные вкладки браузера с одинаковыми чатами?   -  person Francisco Soto    schedule 15.07.2010
comment
да, у наших пользователей может быть одновременно открыто несколько вкладок или окон, и я хочу, чтобы они могли отслеживать свои открытые чаты из любой вкладки / окна.   -  person Ollie Edwards    schedule 15.07.2010


Ответы (1)


Итак, я немного покопался в чате Facebook, и кажется, что они просто позволяют каждой вкладке управлять своим собственным соединением. Ejabberd ставит несколько препятствий на моем пути к достижению этого с помощью MUC-комнат, поэтому я думаю, именно поэтому я изначально был склонен не принимать это решение во внимание. Я думаю, что личные сообщения должны быть более простыми для всех, кто заинтересован.

Проблема с несколькими экземплярами MUC: https://support.process-one.net/browse/EJAB-305

Думаю, мне придется обосновать необходимость исправления ejabberd. Если у кого-то есть другие наблюдения, буду рад их услышать.

person Ollie Edwards    schedule 19.07.2010