Backend для web мессенджера Jabber
От: Lixo  
Дата: 24.07.13 07:45
Оценка:
Приветствую!
Есть сайты типа imo.im, которые представляют из себя единый web интерфейс для различных мессенджеров (Jabber, ICQ, MSN и др).
Знает ли кто нибудь, как устроена серверная часть этих сервисов?
Например в imo все общение с сервером сводится к отправке JSON на imo.im/imo
тут возникает вопрос, как обеспечивается для конечного пользователя постоянное соединение с Jabber сервером.
Я предполагаю, что у них связка Comet server + Их собственная реализация различных протоколов (xmpp, icq и тды)
может, кто-нибудь укажет верный путь, в какую сторону покопать
Re: Backend для web мессенджера Jabber
От: Nikolay_Ch Россия  
Дата: 24.07.13 08:07
Оценка:
Здравствуйте, Lixo, Вы писали:

L>Я предполагаю, что у них связка Comet server + Их собственная реализация различных протоколов (xmpp, icq и тды)

L>может, кто-нибудь укажет верный путь, в какую сторону покопать
Я бы делал сервис, который делал бы соединение от себя до сервера, к примеру, Аськи для каждой открытой сессии на моем веб-сервере.
И пока существует веб-сессия, держал бы открытым это соединение. Но это так — на вскидку, т.к. я особо не разбирался в протоколе Аськи и не знаю — может там можно держать одно соединение сразу для нескольких сессий.
Re[2]: Backend для web мессенджера Jabber
От: Lixo  
Дата: 24.07.13 12:51
Оценка:
N_C>Я бы делал сервис, который делал бы соединение от себя до сервера, к примеру, Аськи для каждой открытой сессии на моем веб-сервере.
N_C>И пока существует веб-сессия, держал бы открытым это соединение.
Так-то логично, но, как при такой реализации оповещать браузер пользователя о том, что ему написали сообщение. Не заставлять же его с интервалом в несколько секунд проверять статус сервера.
Re[3]: Backend для web мессенджера Jabber
От: Nikolay_Ch Россия  
Дата: 24.07.13 12:56
Оценка:
Здравствуйте, Lixo, Вы писали:

N_C>>Я бы делал сервис, который делал бы соединение от себя до сервера, к примеру, Аськи для каждой открытой сессии на моем веб-сервере.

N_C>>И пока существует веб-сессия, держал бы открытым это соединение.
L> Так-то логично, но, как при такой реализации оповещать браузер пользователя о том, что ему написали сообщение. Не заставлять же его с интервалом в несколько секунд проверять статус сервера.
HTTP вообще односторонний протокол...

Поэтому или используете Web-Sockets (я правда их никогда не видел) или делаете в скрипте интервальное получение с сервера JSON-объекта, который показывает были ли обновления с последнего обращения. Если использовать HTTP1.1 с опцией сonnection:keep-alive, и интервал опроса короткий, то и соединение закрываться не будет — все будет достаточно быстро.
Re[2]: Backend для web мессенджера Jabber
От: zaufi Земля  
Дата: 26.07.13 09:31
Оценка: 1 (1)
Здравствуйте, Nikolay_Ch, Вы писали:

N_C>Здравствуйте, Lixo, Вы писали:


L>>Я предполагаю, что у них связка Comet server + Их собственная реализация различных протоколов (xmpp, icq и тды)

L>>может, кто-нибудь укажет верный путь, в какую сторону покопать
N_C>Я бы делал сервис, который делал бы соединение от себя до сервера, к примеру, Аськи для каждой открытой сессии на моем веб-сервере.
N_C>И пока существует веб-сессия, держал бы открытым это соединение. Но это так — на вскидку, т.к. я особо не разбирался в протоколе Аськи и не знаю — может там можно держать одно соединение сразу для нескольких сессий.

нет, нельзя.
насчет реализации: для некоторого набора протоколов вполне можно иметь просто jabber сервер, создавая к примеру динамически аккаунты для пользователей которые хотят логиниться в ICQ/AIM/MSN/... и передавать эти credentials соответствующему шлюзу (подключая его в ростер нового пользователя) -- web клиент даже не заметит, что он работает через XMPP на самом деле... ну в смысле он и так ни чего не знает, кроме упомянутого JSON межу его браузером и сервером (HTTP). таким образом, можно "унифицировать" на серверной стороне работу с разными протоколами -- просто имея только XMPP между HTTP сервером и (e)jabberd (без зоопарка клиентов/протоколов в разные говносети)...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.