LINUX.ORG.RU

IM-клиент (ICQ, Jabber) с клиент-серверной архитектурой или синхронизацией истории между параллельно запущенными клиентами.

 , , ,


0

2

ВНИМАНИЕ (!!!): Серверная сторона клиента (из-за безопасности и конфиденциальности) может быть ТОЛЬКО на МОЕЙ стороне (собственный сервер, а не что-то непонятное в облаке хрен знает у кого).
ВНИМАНИЕ (!!!): Если Вы сейчас собираетесь предложить поднять свой jabber-сервер и замутить там ICQ-транспорт, то сразу готовьте ответ на нижеобозначенный вопрос о синхронизации логов (включая переданные сообщения) и отсылки сообщений на все клиенты.

Итак, в связи с наличием большого числа устройств есть проблема с синхронизацией логов и параллельного запуска клиентов. Т.е. требования следующие:
1. На девайсе 1 я запускаю клиент, мне приходит сообщение, я его читаю, отсылаю ответ. Далее (не выходя из клиента 1) захожу на клиент 2, в логах этой беседы я вижу своё и чужое сообщения с беседы, проводимой на клиенте 1. Далее с клиента 1 я отправляю сообщение, оно должно сразу появиться в логах клиента 2. Далее мне приходит сообщение. Оно должно отобразиться на двоих клиентах сразу.

2. Есть два варианта механизма синхронизации: а) сервер-демон для IM и логов и много клиентов к нему. Никто не отваливается, все работают с сервисами IM параллельно. б) сервер только синхронизации логов (вероятно БД) и много клиентов к нему. Между клиентами синхронизируются только логи, т.е. только один клиент может пользоваться IM-сервисами в один момент времени. Остальные - оффлайн.

Ну и вариант, который самый очевидный, но не удобный нифига: rsync-сервер (хранилище файлов, в принципе), на клиентах rsync-клиент. Он через lsyncd или просто раз в определенное время (30 секунд, например) делает синхронизацию файлов мессейнджера в хранилище. При этом нужен также скрипт на каждом клиенте, который смотрит сервере наличие определенного файла раз в 5 секунд, то убить клиент. А запуск каждого клиента должен производиться через скрипт, который создает такие файлы для всех клиентов, кроме этого, ждёт 9 секунд, пока все клиенты точно умрут и только после этого запускается клиент. Только так можно будет достичь консистентных логов. Сразу скажу, что сетевую ФС для глобального хранения логов использовать не вариант, т.к. часть девайсов - мобильные устройства (планшет, нетбук, ноутбук и коммуникатор).

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


В плане функционала наиболее близко к моим требованиям стоит скайп, однако мне нужно иметь ICQ и Jabber, а не скайп :) Ну и исходный код и нормальный интерфейс, есстественно.

Примерно нужный функционал предоставляет Numbuzz ( http://ru.wikipedia.org/wiki/Nimbuzz ), однако всё это дело очень проприетарное и сервера в только их используются.

☆☆☆

Последнее исправление: ktulhu666 (всего исправлений: 3)
Ответ на: комментарий от note173

Хочется. Но сложность настройки (например, если как-то хитро это можно через jabber делать) меня нисколько не пугает).

ktulhu666 ☆☆☆
() автор топика

Из того, что нашел только http://www.shaorang.com/webpidginz/ . Это не торт, конечно, но есть его можно. Однако, хочется куда более нативного решения.

ktulhu666 ☆☆☆
() автор топика

Я правильно понял, что тебе нужно хранение истории на сервере и подтягивание ее клиентами?

leave ★★★★★
()
Ответ на: комментарий от leave

Пооему с другого клиента ибо еслия на работе переписываюсь с кем-то, закрываю скайп, дома открываю, истории нет. А если переписываюсь, не закрываю, открываю дома, то история появляется, ну и по такой-же логике от контактов из ростера история подсасывается.

Deleted
()
Ответ на: комментарий от Deleted

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

leave ★★★★★
()
Ответ на: комментарий от leave

На p2p больше похоже. История подтягивается от второго параллельно запущенного клиента и от всех контактов в ростере и/или участников группового чата, но если все будут оффлайн - хистори ты не получишь. По-крайней мере, так было у версий 2.x под линух.

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от leave

Могу и свой сервер поднять, не суть важно. Важно достичь цели. :)

ktulhu666 ☆☆☆
() автор топика

Если доступ нужен только с компов, то tmux + mcabber + ssh. Сам так делаю.

d ★★★★★
()

Нет таких клиентов, можешь поднять jabber сервер с archive messanging (история на сервере) и использвать remote commands для получения уведомлений и сообщений с другого ресурса. Тут опять две проблемы: сервер с такой функциональностью (openfire умеет) и jabber клиент

bhfq ★★★★★
()
Последнее исправление: bhfq (всего исправлений: 1)

ВНИМАНИЕ (!!!): Серверная сторона клиента (из-за безопасности и конфиденциальности) может быть ТОЛЬКО на МОЕЙ стороне (собственный сервер, а не что-то непонятное в облаке хрен знает у кого).

ВНИМАНИЕ (!!!): Если Вы сейчас собираетесь предложить поднять свой jabber-сервер и замутить там ICQ-транспорт, то сразу готовьте ответ на нижеобозначенный вопрос о синхронизации логов (включая переданные сообщения) и отсылки сообщений на все клиенты.

ВНИМАНИЕ!!! ПИШИ СВОЁ!!!

q9
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.