Идеальная аська, семь лет назад

21 Сен
2011

По прочтении статьи “Ваш ICQ UIN запущен на другом компьютере…” и комментариев к ней вспомнилось давнишнее обсуждение в узком кругу, как сейчас модно говорить, виденье идеальной аськи, и раз пошла такая пьянка (а вдруг сделают) озвучиваю свое мнение в части нескольких сессий под одним UINом.
ICQ UIN Cannel

Для решения задачи предлагается добавить поддержку “каналов” по которым осуществляется подключение (к тому времени такое уже заявлялось в Jabber-е в виде ресурсов, но лично я, тогда, имел смутное представление о нем), при этом сохраняется, аналогичное существующему, ограничение – одна сессия на канал, т.е. нельзя зайти на UIN/Channel0 с нескольких устройств. Что это дает? — с одной стороны, сохраняется тонизирующее сообщение в случае потенциального увода UIN-а, с другой стороны, есть возможность конфигурировать индивидуальный доступ для нескольких устройств.

В профиль пользователя добавляется настройка списка каналов, а также выбор канала по умолчанию. При настройке клиента с реализованной поддержкой каналов, пользователю, можно будет указать (но необязательно), помимо UIN-а и пароля, имя канала который будет использоваться при авторизации на сервере. Для старых клиентов, ну или в случае если канал не указан, сервер автоматом будет использовать канал выбранный по умолчанию.
Сервер

При первоначальном внедрении списка каналов, всем существующим пользователям создается стандартный канал, например User, и назначается по умолчанию. Старые клиенты спокойно работаю, а вот новые сообщают серверу, что поддерживают каналы.
На сервере уже есть механизм для хранения недоставленных сообщений, его надо расширить, добавить новое измерение – канал, где отмечать на клиент какого канала не было доставлено сообщение. При приходе нового сообщения, сервер рассылает его по активным каналам и, соответственно, сохраняет для неактивных.
Помимо прочего надо добавить в протокол уведомление сервера о прочтении сообщения. В этом случае (прочтении) недоставленные сообщения для неподключенных каналов, помечаются на сервере как прочитанные, и в дальнейшем, при подключении канала, клиент не сообщает об их приходе, а молча добавляет себе в историю.
Обратная ситуация, пользователь шлет кому-то сообщение, сервер, отослав его контакту, сохраняет для доставки на другие каналы текущего UIN-а, которые опять же молча добавляются в историю.
Далее, надо добавить настройку пароля для канала, чтобы была возможность иметь разные пароли на разных устройствах, плюс, настройка прав доступа канала к редактированию частей профиля, списка контактов и т.п. Зачем это нужно? – например пользователь хочет зайти в аську на “гостевом” компьютере через не принадлежащий ему клиента, чтобы обезопасить себя от увода UIN-а он указывает канал с ограниченными правами, с которыми нельзя сменить пароли и редактировать профиль.
Дабы снизить вероятность подбора пароля, можно добавить настройку — скрыть список каналов для просмотра другими пользователями. Параноики могут удалить стандартный канал User и заменить его на свой, также убрать настройку канала по умолчанию, таким образом кроме пароля надо будет подбирать имя канала. Или наоборот, оставить User с минимальным доступом, без списка контактов и синхронизации истории, зато если вдруг сломают, то придет уведомление об активности этого канала.
Клиент

Рассмотрим типовой случай, пользователь имеет стационарный компьютер на работе, ноутбук дома и несколько застарелый смартфон. Для первых двух обновленные клиенты выйдут в течении единиц месяцев, даже если используются сторонние клиенты (хотя будет лишний повод переселить народ на официальный клиент). Для них создаются каналы – work и notebook (логично) а вот для смартфона на какой-нибудь старой ОС не факт что обновится, но не беда, и так работать будет, по каналу выбранному по умолчанию.
Пользователь сидит на работе, ему приходит сообщение – на всех трех аськах появляется уведомление, он читает его по каналу work, клиент сообщает об этом серверу, сервер сообщает новому клиенту на канале notebook, тот гасит уведомление, но вот на смартфоне оно остается висеть. Пользователь пишет ответ, он сохраняется на клиенте а также доставляется сервером на notebook, где молча пишется в историю. Далее, сервер знает что на смартфоне старый клиент, в этом случае нужна настройка – посылать собственные сообщения, на этот канал, или нет, не факт что клиент их воспримет без последствий, хотя, например, миранда спокойно переваривает.
Итог

Поддержка несколько устройств под одним UIN-ом.
Синхронизация истории между устройствами.
Настройки прав доступа для особых условий.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх