company_banner

Ваш ICQ UIN запущен на другом компьютере? Продолжайте общение на этом!

    Когда-то давным-давно, в девяностые годы, компьютеры были большими, трава зеленой, а вода мокрой. В эти сказочные времена, у кого-то был Интернет дома, у кого-то на работе, но почти ни у кого его не было и там, и там. А уж Интернета на телефоне не было и вовсе ни у кого. (И люди жили, между прочим! Не правда ли, сложно в это поверить?)

    image

    Придумывая ICQ, его авторы естественно смотрели на окружающий мир (а больше смотреть было не на что, других инстант-мессенджеров в то золотое время не было) и решения принимали соответствующие этому миру:
    – никто не работает через Интернет, никому не нужны рабочие контакты дома, давайте хранить контакт-лист на клиенте;
    — один человек не может сидеть за двумя клавиатурами, не разрешим одному UIN присоединяться параллельно из двух мест.

    Но мир, разумеется, менялся. Уже в начале двухтысячных люди стали активно работать из дома (а некоторые редкие экземпляры занялись личными делами на работе, но об этом тссс, не будем их выдавать) и контакт-листы переместились на сервер. А в 2011-ом пришла пора изменить и другое правило девяностых.

    Потребность общаться с двух устройств в век мобильного Интернета очевидна. Если включать аську утром, приходя на работу, и вечером, вернувшись домой, в общем-то не сложно, то что-то специально нажимать на мобильном, каждый раз отходя от компьютера ради совещания или перекура – идиотизм. А значит, клиент на мобильном должен быть онлайн всегда (PUSH-уведомления, к счастью, позволяют), и как следствие — клиент на PC не должен его “выбивать”. Таким образом, пора забыть сообщение про “Ваш UIN используется на чужом компьютере" или, по крайней мере, существенно его модифицировать.

    К сожалению, в этот раз мы не пионеры изменений, смотреть можно уже не только на окружающий мир, но и на то, как функционал реализовали коллеги-конкуренты. Самый интересный вопрос, конечно, какому из клиентов доставлять сообщение, если к серверу их подключено сразу несколько. Доставлять всем – плохо, лишние уведомления раздражают, не доставлять всем – страшно, вдруг нужному-то и не доставим. Если честно, то, на наш взгляд, существующие сейчас решения скорее оставляют вопрос открытым, нежели отвечают на него. XMPP-стандарт дает довольно много указаний, но в самом интересном с практической точки зрения месте пишет следующее:
    the server MAY use some other rule (e.g., most recent connect time, most recent activity time, or highest availability as determined by some hierarchy of <show/> values) to choose between them or MAY deliver the message to all such resources. tools.ietf.org/html/rfc3921#section-11

    А большинство реализаций, как XMPP-based, так и закрытых, часто отправляют сообщения просто во все доступные соединения – уж точно не потеряется.

    Возвращаясь к ICQ. Инфраструктурно мы уже готовы к поддержке нескольких одновременных соединений, код сервера написан, большинство клиентов (включая неофициальные) протестированы, осталось только включить. Единственное, что нас пока останавливает от этого шага – неопределенность с алгоритмом отправки сообщений, или, по сути, решение, какие some other rule были бы максимально удобны пользователям. Желающие помочь с ответом на этот вопрос приглашаются в комментарии. Кроме того, мы уже сейчас можем включить возможность параллельных соединений для отдельных UIN'ов, добровольцы могут прислать свои номера приватно.

    Заранее спасибо за помощь!
    Метки:
    Mail.Ru Group 1 002,64
    Строим Интернет
    Поделиться публикацией
    Похожие публикации
    Комментарии 261
    • +12
      вот она революция)
      • +2
        *играют фанфары*
        • +1
          скорее всего эволюция, революция слишком быстро.
          • +2
            думаю следующий шаг будет чат с несколькими собеседниками одновременно.
            • +4
              Вообще-то и в протоколе, и в официальном клиенте это уже давно есть (дату включения на память не скажу, но до покупки).
              • +7
                Cледующий шаг будет в системных требованиях, например на 4 ядра и 3-way SLI из GTX5xx =)
            • +7
              >вот она революция)
              Как-то мягко, хотелось бы сказать «охренеть!!! Свершилось!!!!»
            • –1
              Хорошо, так глядишь и в Jabber перетаскивать друзей не нужно будет. Отписал в ПМ.
              • +18
                По поводу алгоритма отправки сообщений не очень понятно. Лично мне удобно в скайпе. Полный дубль истории, видно как отправляются сообщения на соседнем клиенте. Это как плюс, так и минус. Было бы очень классно при общении с контактами указывать, будет ли синхронизирована история в реальном времени.
                Отписал свой UIN в личку.
                • +1
                  Опишу ситуацию, которая меня не устраивает в данный момент. Я постоянно держу включенным клиент на ноутбуке. Вот нужно мне куда то срочно отойти. Первое, что я делаю — выключаю аську на ноутбуке, читаю сообщения, которые мне пришли (а ведь закон подлости, они приходят пачками именно в тот момент, когда мне нужно отойти). Далее я закрываю клиент и запускаю на телефоне, отвечаю уже там.

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

                  Лично меня не устроит способ, предложенный в (http://habrahabr.ru/company/mailru/blog/128777/#comment_4260407)
                  • –2
                    Все работает. Замечены 2 странности.

                    Сам mail.ru агент не позволяет зайти одновременно с двух устройств. Я раньше не пользовался им, может что то не знаю.

                    Синхронизируются только входящие сообщения. Я не вижу, что пишу с телефона на компе и наоборот.

                    В данный момент лично для меня есть сильный аргумент для удаления qip везде, где он использовался и установки агента. Даже без синхронизации исходящих сообщений.

                    Теперь вопрос безопасности. Вы подключаетесь к моей учетной записи от своего сервера и транслируете сообщения на мои несколько подключенных клиентов? Как вы храните мой пароль?
                  • –5
                    Мне кажется, отсылать нужно на источники последней активности. Ушел человек на перерыв, взял с собой телефон с ICQ, переписывается фривольными сообщениями — а у него все они всплывают на рабочем компьютере… Нехорошо. Сообщения должны доставляться туда, где сейчас находится человек.
                    • +6
                      Плохо, ушли Вы на обед, взяли с собой мобильный, а последняя активность была на компьютере и пока Вы с мобильного что-нибудь не отправите все сообщения будут идти на компьютер, что не удобно
                      • –5
                        Хотите сказать, вы берете телефон и не нажимаете на нём ни одной кнопки — посмотреть время, проверить, нет ли новых сообщений (вдруг не услышал), проверить заряд батареи etc? Или это я один такой?)
                        • +2
                          Не думаю, что все мобильные устройства позволят перехватывать события. Сложность с определением активности, признайтесь же =)
                          • +2
                            Он просто лежит в кармане, почему для того чтобы мне приходили сообщения я должен его тормошить? Это неудобно. Приложение же следящее за чужой активностью мне моя паранойя поставить не позволит. Мало ли, что оно потом с этими данными делает
                            • +3
                              Я сижу за компом, мне пришла смска — читаю её и в этот момент на комп сообщения не приходят.
                            • 0
                              А если статус «Отошел» тогда не отсылать?
                              Т.е. только для активных?
                              • 0
                                Статусы как активность интерпретироваться не должны. Например, я могу быть за компом, но при этом я заниматься каким-либо делом, при этом не настолько важным чтобы ставить статус «Небеспокоить», в таком случае логично поставить статус «отошел» чтобы люди видели, что ответить я могу не сразу.

                                Имхо ненужно изобретать велосипед. Есть два подхода:
                                1. Подход скайпа. Синхронизировать история за поределенный период
                                2. Подход XMPP. Сообщение рассылаются устройствам с наибольшим приоритетом

                                Оба подхода работают прозрачно для пользователя. Всякая эвристика рассчитанная на определение последней активности непрозрачна для пользователя, а значит будет приводить к потере сообщений.
                                • 0
                                  3. Ленивая (по требованию) синхронизация (вплоть до полной) с глобальным флагом прочитанности сообщения. То есть с любого клиента (девайса) можно загрузить всё, что нужно и точно знать, какие сообщения прочитаны, а какие нет (в том числе и для того, чтобы знать что грузить, а что нет).
                                  • 0
                                    Лучше тогда промежуток времени от последнего полоченного сообщения от клиента задавать. То есть по умолчанию грузится последние сообщение +, например, все которые были получены за 24 часа до него. Промежуток задавать в настройках
                                    • 0
                                      Последнее сообщение от контакта получено 10 лет назад — оно мне нужно?
                                      • 0
                                        Ну да. Последнее было n лет назад, а сейчас он вам вдруг написал, хистори за сутки общения с ним поможет вспомнить кто это. Да и хистори после определенного срока можно подгружать только если человек открыл чат с данным контактом.
                                        • 0
                                          Сорри, неправильно понял «от клиента» в предыдущем комменте.
                                          • 0
                                            А опечатался, имелось ввиду от контакта :)
                                            • 0
                                              Значит правильно понял, и на фиг это не нужно :) Вот когда напишет контакт, когда конкретный клиент будет будет в онлайне, вот только тогда можно притащить его предпоследнее сообщение 10 лет назад. А пока не пишет — зачем его тащить?
                                              • 0
                                                Возможно Вы и правы
                            • +5
                              Идея синхронизации как в скайпе хороша, но имхо, не раньше, чем другой источник проявит активность.
                              И еще, почему бы не предоставить выбор пользователю? Сделать в настройках клиента radio-button, типа:
                              «когда я активен на этом клиенте:
                              -рассылать всем остальным подключенным;
                              -синхронизировать историю при потере активности;
                              -не синхронизировать с другими устройствами»
                              И на каждом клиенте можно свои настройки задать. Получается вполне гибко, и пользователь доволен, и у вас вопросов не возникает.
                              • +6
                                А нефик фривольные сообщения с рабочей аськи писать. Надо разделять личные и рабочие дела.
                                Согласен с большинством — мне по душе подход скайпа. History на всех устройствах должны быть идентичны.
                                • +3
                                  В скайпе далеко не идеальный подход. По крайней мере, сервер присылает клиенту историю как начавшийся диалог.
                                  На ноуте скайп включен редко. На десктопе — всегда. Стоит включить скайп на ноуте и туда начинает приходить толпа сообщений как будто мне кто-то пишет. Разгребать это очень неприятно.
                                  Если они допилят клиент-сервер так, чтобы это воспринималось как история, а не входящее сообщение, то будет ок.
                                  • 0
                                    Это да — не очень удобно, но ради синхры базы можно пережить. Это лучше чем перебирать все свои клиенты в поисках типа «блин на какую из асек мне скидывали ip сервера».
                                    • +2
                                      Это надо не переживать, а решить эту проблему в конце концов.
                                      • 0
                                        А я через дропбокс все синхронизирую
                                        • 0
                                          В принципе рабочий вариант, если аська не запущена одновременно на ББ и смарте. Если по очереди юзать, то да — вполне нормуль. Но я аську на работе вообще не вырубаю, так что мне такой вариант не подойдет :(
                                          • 0
                                            Хотя в моем случае вариант с дропбоксом все равно не пройдет. На работе миранда под вайном (ну привык я к ней....). На смарте ее база не откроется ни одним из клиентов. Так что пока живу без аськи на смарте, т.к. забодался искать что куда писали. Поэтому гоняю на смарте скайп. Если я кому-то срочно нужен, то он достанет меня и через скайп, а если не сможет — значит не особо сильно я и нужен в данный момент — потерпит пока я за ББ появлюсь (админам тоже иногда надо отдыхать).
                                      • +1
                                        В принципе все что надо добавить в протоколе — при прочтении сообщения на сервер должен уходить флажок «сообщение прочитано». Соответственно при получении сообщений на другом устройстве при наличии такого флажка, можно было бы просто молча писать их в базу.
                                  • 0
                                    Дык не обязательно всплывать сообщениям на экран — пусть себе мигают в трее.
                                  • +7
                                    Скайп доставляет сразу всем подключенным клиентам — помоему это правильно. Например, полезно когда хистори везде сохраняется.
                                    • 0
                                      А звон приходящего сообщения сразу в двух местах не раздражает?
                                      • +15
                                        я вообще отключаю звук во всех мессенджерах сразу после установки, так что нет, не раздражает )
                                        • –1
                                          И вы полагаете, что это всем удобно будет?
                                          • 0
                                            всем, кого раздражают звуки — да )
                                        • 0
                                          Разве это стоит отсутствия синхронизации? Попробуйте одном месте выключить звук.
                                          • +13
                                            Не раздражает. Мало того, что скайп доставляет сообщение всем подключенным клиентам, он ещё додоставляет вновь включенному клиенту сообщения, которые были посланы, пока он был отключен. И это офигенно удобно, потому что история сообщений в результате на всех клиентах синхронизирована. Послали тебе на телефонный скайп ссылку — пришел домой, удобно и с компа её посмотреть, а не париться, вбивая вручную. Или проконсультироваться с историей переписки, проведенной на компе, позже на телефоне (например, адрес там какой-нить уточнить).

                                            Так что совершенно правильно и корректно сделать так же, как делает скайп. Всё остальное — это будет ужасно, только история фрагментируется и потеряет смысл.
                                            • +3
                                              Ну а если я неделю (месяц, год) общаюсь с компьютера, потом решу зайти с мобильного, зачем мне получать километры оффлайн сообщений? Это и большой трафик, и icq клиент просто не выдержит.
                                              • +1
                                                Предусмотреть возможность отключения получения «километров сообщений»? При входе клиент спрашивает «100500 сообщений на этот UIN нет локально, непрочитано 2. Загрузить все или загрузить только новые?»
                                                • –1
                                                  А если сообщения от 100 контактов?
                                                  Идея синхронизации, с точки зрения большинства мобильных устройств, — утопия
                                                  • +1
                                                    Если расширить идею, то нужно реализовать ленивую загрузку сообщений. Но вот почему утопия — я не понимаю. Объёмы карт памяти измеряются гигабайтами, встроенной — сотнями мегабайт. Мало?
                                                    • 0
                                                      Решается кнопкой для мобильного клиента «Синхронизировать историю только по wi-fi» для всех контактов, еще кнопку в меню контакта «Синхронизировать историю этого контакта» для синхронизации истории конкретного контакта. А последние, допустим, 10 (можно задать вручную) непрочитанных сообщений пусть приходят на мобильный. Прочитано/не прочитано пусть определяется отсылкой пакета на сервер.
                                                      • 0
                                                        а не проще синхронизировать сразу последние 10 сообщений [активного контакта], а в фоне загружать что угодно
                                                        • 0
                                                          Нет смысла для последних 10 сообщений, обычно прочитанные сообщения необходимы лишь чтоб вспомнить на чем остановилась беседа, достаточно трех, всё остальное можно повесить на пункт в меню для загрузки вручную, это актуально для мобильного интернета с лимитированным трафиком (для тех у кого безлимитный мобильный интернет, отключается пунктом в меню «Синхронизировать историю только по wi-fi»), по вафле, как я уже говорил пусть всё синхронизируется в фоне.
                                                          • 0
                                                            незнаю незнаю

                                                            я заметил что последнее время люди не пишут абзацами

                                                            они пишут короткими фразами

                                                            типа вот так

                                                            этому способствует отправка по ентеру
                                                            • 0
                                                              они пишут короткими фразами
                                                              типа вот так
                                                              этому способствует отправка по ентеру

                                                              мне достаточно этих трёх сообщений чтоб вспомнить о чем мы с Вами говорили

                                                              а Вам?
                                                              • +1
                                                                боже мой. а так:

                                                                напоминаю что отправить документ в этот раз нужно на мой личный имейл

                                                                123@123.12

                                                                вы поняли?

                                                                — да

                                                                тогда до связи

                                                                всего хорошего

                                                                и вам не хварать

                                                                — Удачи вам вспомнить мыло
                                                                • –2
                                                                  Таких идиотов кто будет переспрашивать понял ли я, потом еще распинаться в любезностях по полгода довольно мало, эта беседа выдумана, а даже если и нет, то бывает довольно редко, а когда бывает всегда можно подгрузить историю вручную, тем более документ вы скорее всего будете отправлять через нормальный интернет — на работе или у себя дома, там где есть вафля, да и вообще нет необходимости с нормальным интернетом смотреть в аську на мобильном. Мы тут говорили именно про мобильную версию и исключительно в целях экономии пропускной способности канала и экономии денег на трафик, на настольном клиенте путь синхронизируется вся история.
                                                                  Да даже если так случится что нужно отправить документ:
                                                                  1. С мобильного телефона
                                                                  2. С мобильным интернетом
                                                                  То я ни за что не забуду, что мне нужно отправить документ после того как я сказал, что я понял, а узнать емэйл можно простой ручной синхронизацией, которую можно в любой момент остановить специальной кнопкой. Т.е. сообщения будут загружаться блоками от самого последнего до самого первого.
                                                                  • +1
                                                                    Дайте ка подумать… сохранить хорошие отношения с человеком и нормально сделать свою работу или сэкономить трафик и три рубля… сложный быбор то какой.
                                                                    • 0
                                                                      1. Если у вас безлимитный мобильный интернет, то тут вообще не о чем говорить — снимаете галку «Синхронизировать историю только по wi-fi» и у вас история синхронизируется на мобильном устройстве автоматически всегда.
                                                                      2. Мы сейчас говорим об обычных пользователях, а не о наших с Вами потребностях, у большинства из них не безлимитный интернет и не так много людей используют ICQ на МОБИЛЬНОМ ТЕЛЕФОНЕ для работы.
                                                                      И обычные пользователи (а их подавляющее большинство) просто «болтают в аське», всё что им нужно, это не переспрашивать о чем они говорили с контактом час-день-неделю назад и неожиданно прервали беседу.
                                                                • 0
                                                                  А нам надо будет рыскать по всем девайсам где же был IP, телефон, адрес, дата.

                                                                  Либо извращаться и цитировать сообщение самому себе (а на сотке это очень неудобно).
                                                                  • 0
                                                                    Простите, но я Вас не понял, поясните.
                                                                    • +1
                                                                      Получил телефонный номер, по которому надо будет позвенеть.
                                                                      Или любой другой факт.

                                                                      Позже вспомнил, что разговор и с компа, и со смартофона. С компа либо через веб-интерфейс, либо с толстого клиента. К тому же у тебя на человека несколько контактов — ICQ, Jabber, MRIM.

                                                                      Вот и начинаешь сидеть и листать все истории.

                                                                      Либо по получении факта приходится его пересылать на один условленный контакт, например, если считаете для себя основным XMPP. С надеждой, что остальные девайсы это сообщение самого себе подхватится.

                                                                      Особенно мерзко получить длинный урл на сотку (особенно Quoted Printable) и пытаться его набрать на компе.
                                                                      • 0
                                                                        Не усложняйте модель добавлением лишних и ненужных компонентов вроде Jabber и mail.ru, сейчас речь идёт про аську.
                                                                        История для ICQ (в будущем) или MRIM, если mail.ru это организует/организовал — я не пользуюсь, поэтому не в курсе, синхронизируется на всех клиентах, и на толстом, и через веб интерфейс, в кипе есть поиск по истории и метаконтакты.
                                                    • 0
                                                      насколько я понял, скайп не все сообщения пихает на подключенный клиент, а только недавние за определенное время, или определенное их число. Я точные значения этих параметров не знаю. Тут действительно можно сделать настройку и предусмотреть какие-то разумные умолчания, вроде недели и 100 сообщений, например.
                                                      • 0
                                                        Все. Вчера наблюдал, как приятель включил мобильный скайп, который не запускал около двух месяцев, и оно стянуло всю историю за это время. А сам я, когда на свою мобилу его ставил, видел, как он начал двухлетней давности историю показывать, но я его вовремя остановил.
                                                        • 0
                                                          У меня есть возможность выбора за вчера, неделю, 30 дней, все.
                                                      • 0
                                                        Более того, свежеустановленный скайп может стянуть историю переписки с любого из собеседников, пока они есть в сети. Или даже с самого себя, запущенного на другой машине, где есть полная история этой самой переписки.
                                                      • 0
                                                        Честно — не задумывался — я редко звоню по скайпу.
                                                      • +8
                                                        ага особенно удобно жене читать всю историю в ралтайме, когда вы на работе делитесь с друзьями подробностями…
                                                      • +1
                                                        Согласен с предыдущими ораторами. То, как сделано в скайпе — привычно и удобно.
                                                        А если смотреть по последней активности, то получается, что ты переписываешься с рабочего места, убегаешь куда-то на совещание или обед и с собой только телефон с запущенной аськой, и туда ты ничего не получишь, пока сам активность не проявишь?
                                                        • 0
                                                          Напишу здесь чтобы далеко не ходить)

                                                          Синхронизация истории как у скайпа — это плюс.
                                                          Ненавязчивое сообщение о приходе нового сообщения — явно плюс. А не то что у аси — «ОоУ. Но некоторых это и смущает.

                                                          Предлагаю по активности на ПК делалть выводы о местанахождении человека и из этого решать оповещать его или нет. Историю синхронизируем по умолчанию.

                                                          Сценарий такой — вы работали — ася Оо-кала на компе. 7 минут неактивности на компе — делаем вывод что человек покинул место — отключаем звук прихода новых сообщений на компе (но сообщения приходят и визуально показываем что есть новые сообщения (бейджи)) — в это же время включаем звук на мобильном клиенте. Когда человек проявит активность на мобильном клиенте снимаем все бейджи и помечаем сообщения прочитанными на компе (так как они прочитываются на мобильном). Но при 7 минутах не активности и на мобильной версии — возвращаем звуковое оповещение и там и там. Ну и даем понастраивать кому надо.

                                                          Вместо „7 минут неактивности“ можно сменить на „7 минут неактивности + 3 минуты не ответа на непрочитанное сообщение“.

                                                          • 0
                                                            Внизу тоже самое пишут)
                                                            • 0
                                                              >так как они прочитываются на мобильном

                                                              Кто сказал, что все они будут прочитаны?
                                                              • 0
                                                                Мобильный клиент
                                                                • 0
                                                                  Аська сменила свое поведение и теперь прочитанными сообщения считаются только тогда, когда они реально прочитаны (открыты), а не когда доставлены клиенту?
                                                                  • 0
                                                                    Я не разработчик аськи и даже не интересующийся. Сценариев на все случаи жизни можно написать и для новых и старых клиентов. Надо просто это сделать. Удобство привлекает людей, поэтому я перестал пользоваться асей.
                                                                    • 0
                                                                      Мне кажется мои слова можно переиначить как — клиентам надо посоветовать поддерживать еще один параметр — пользуется ли человек в данный момент приложением
                                                                      • 0
                                                                        Я про очень бесившее меня поведение в аське, когда я ею активно пользовался — логинишься, получаешь уведомление «100500 новых сообщений», по каким-то причинам перелогиниваешься и все сообщения уже как бы прочитанные.

                                                                        Как приложение может узнать, пользуются ли им сейчас, если оно в подавляющем большинстве случаев используется как фоновое?
                                                                        • 0
                                                                          Ну в момент то когда вы им пользуетесь оно открыто, а подробнее я выше написал.

                                                                          Мобильный всегда с вами, логично ему передавать приоритет на «бытие онлайн» (и получение сообщений) лучше чем оставлять на десктопе.
                                                                          • 0
                                                                            Пускай даже я им пользуюсь активно, пускай прочитаю 90 сообщений из 100 (скажем, на работе по работе), но 10 (личных) останутся непрочитанными (до конца рабочего дня) — перелогин (а тем более логин на другом девайсе/клиенте) и я не смогу их прочитать, по крайней мере, как непрочитанные.
                                                                            • 0
                                                                              Ну дык… везде так… где вы видели обратное — чтобы клиент следил за вашими глазами — на каком же вы там сообщении остановились читать.
                                                                              • 0
                                                                                У гугла, например — пока я сообщение не открыл, оно помечено непрочитанным, откуда бы я не входил. Работал бы гугл по принципу аськи — все бы сообщения помечались прочитанными в момент входа в папку «входящие».
                                                            • +1
                                                              Вообще, люди даже если и работают с несколькими устройствами, то редко это происходит в самом деле параллельно. Если же и происходит, то люди, как мне кажется, будут ожидать от всех экземпляров приложения синхронных действий.
                                                              • 0
                                                                А если при подключении более одного устройства именно у отправителя будет отображаться информация об устройствах и ему выбирать, на какое отправить сообщение?
                                                                Пример: я хочу написать Васе и вижу что он онлайн пс клиентом и айфон клиентом.При этом время 18.30.Из чего я заключаю, что Вася балбес и снова забыл выключить рабочий комп и посылаю сообщение на айфон.
                                                                • 0
                                                                  Во-первых, это противоречит концепции ленивого пользователя.
                                                                  Во-вторых, требует изменений на клиентах, т. е. в любом случае, даже если в будущем поддержать, сейчас, для пользователей старых клиентов нужно какое-то разумное поведение по умолчанию.
                                                                  • +2
                                                                    а зачем тебе то выбирать? просто отправь и не думай об этом, а Вася получит сообщение где захочет )
                                                                  • –1
                                                                    Через джаббер транспорт можно было давно исопльзовать один ICQ UIN с нескольких мест, за счет того что он был запущен на сервере, а клиенты все были на xmpp
                                                                    • +5
                                                                      Совершенно подтверждаю справедливость примера скайпа:

                                                                      1) Одновременное подключение возможно.
                                                                      2) Вся переписка дублируется на все устройства.
                                                                      3) Более того, полная переписка восстанавливается на всех устройствах, даже если некоторые были выключены в течение разговора

                                                                      В виду того, что мылру имеет в руках оба протокола — и MRIM, и OSCAR, я бы посоветовал внедрить это в обоих подконтрольных протоколах.

                                                                      Более того, в виду присоединения магента к экосистеме Jabber, рекомендую стартовать XMPP сервер с таким же свойством мультилогина и «непрерывного разговора»

                                                                      Это мылру будет полезно даже в их отношениях с уполномоченными органами. ;-)

                                                                      А если нафантазировать дальше, то мылру мог бы (как и кип) шлюзовать сообщения между разными протоколами, сконсолидировав на своём клиенте почти всю клиентуру IM. А с этим выходить на .COM
                                                                      • +2
                                                                        Отправлять на все включенные месенджеры, ничего в этом страшного нет. Ибо когда с одного месенджера вы будите пересаживать на другой, то к примеру через час опять начнете переписку а предыдущая была на другом девайсе, нужно будет вспоминать о чём речь и т.д.
                                                                      • +5
                                                                        Мне нравится система работы Gtalk — отправлять сообщение туда, где была зарегистрирована последняя активность пользователя. Потому что я, сидя за компьютером, не хочу получать сообщения на телефон. И наоборот, когда я на телефоне, то не хочу чтобы на компьютере они всплывали. Но при этом нужно иметь глобальную историю в облаке, как это предлагает Google — чтобы независимо от того, откуда велась переписка, не пришлось судорожно вспоминать где искать нужное сообщение.
                                                                        А по поводу последней активности — сделать запуск приложения на телефоне сигналом активности, переводя фокус на него. В дальнейшем, при возвращении к компьютеру, простая смена авто-Away статуса на Available снова переключит активность на компьютер. Не идеальный вариант, но как идея.

                                                                        В принципе, устроит и одновременная отправка сообщений на все устройства, с одним исключением — не охота при оживленной переписке наблюдать как все сообщения валятся к тому же и на мобильный телефон, который начинает просыпаться и судорожно нам об этом напоминать.
                                                                        • –1
                                                                          А мне кажется Gtalk это как раз отрицательный пример — кроме разве что хранения хистори в облаке.

                                                                          У меня и у моих друзей он обычно запущен на трех девайсах: домашний компьютер, рабочий компьютер и телефон. Переодически мы все отходим от рабочего компьютера или смотрим что-то на телефоне. Переписка при этом получается рваной — никогда не знаешь какой девайс сейчас активен, на какой ушло очередное сообщение и когда тебе ответят.
                                                                          • 0
                                                                            Я тоже постоянно использую Gtalk, правда не через нативный клиент. И сообщения видно везде, вне зависимости куда они пришли — просто нотификейшн не всплывает. То есть, переписываясь через Trillian, я всегда могу открыть вкладку, где у меня запущен Gmail и увидеть там открытое окно чата со всеми сообщениями. И продолжить, если это необходимо.
                                                                            На самом деле хранение истории в облаке и «неразрывный» разговор — уже давно реализованы сторонними сервисами. Все что требуется от «аськи» — не вылетать.
                                                                        • +3
                                                                          Думаю, что доставлять надо всем, однако можно вместе с сообщением прислать флаг, сигнализирующий о том, что сообщение доставлено на несколько клиентов.
                                                                          Пусть клиент сам решает выводить ему уведомление или нет. (Компьютер, например, — согласно активности, и сессии пользователя, у телефона есть гироскоп) В любом вопрос о выводе или скрытии нотификаций — это вопрос решаемый на стороне клиента согласно его локальным настройкам.
                                                                          • 0
                                                                            Согласен, я думаю это самый адекватный вариант. Разработчики клиентов сами решать что делать и как это настроить для пользователя.
                                                                          • +4
                                                                            1) доставлять всем, а звук проигрывать только на том, где была замечена последняя активность, при этом, необходимо учесть текущий статус, если он не «online», то звук не проигрывать.
                                                                            2) с неофициальными клиентами не получится нормально сделать, поэтому нужно какую-то команду о воспроизведении звука отсылать они со временем все сами сделают
                                                                            • +6
                                                                              Вариант скайпа предпочтителен в виду отсутствия приоритетов клиентов.
                                                                              еще пожелания:
                                                                              сделать jabber сервер с JIDами вида @icq.com
                                                                              дать возможность делать алиасы вида nickname@icq.com, скажем, через веб-интерфейс.
                                                                              • +2
                                                                                • +1
                                                                                  Я думал, никто так и не предложит.
                                                                                  Это — первая мысль, которая возникла при прочтении топика…
                                                                                  • 0
                                                                                    > Это — первая мысль, которая возникла при прочтении топика…

                                                                                    аналогично. :)
                                                                                      • 0
                                                                                        1. Частично это правильно. Но если всегда ориентироваться на старые клиенты делать что-то новое будет сложно. Это все равно, что связывать себе руки.
                                                                                        В крайнем случае, можно ввести новую версию протокола, а старую оставить для обратной совместимости. В старой будут приходить сообщения на все устройства или же будет доступно подключение только с одного (это вам решать), а на новой будут доступны удобные приоритеты и синхронизация истории. Популярные клиенты сделают поддержку нового протоколов, а старые будут пользоваться старым.
                                                                                        Это не очень удобно, но это компромисс на который ICQ уже шел.
                                                                                        2. В клиентах, которые поддерживают Jabber есть два типа установки приоритета, которые могут пересекаться или встречаться по отдельности от клиента к клиенту:
                                                                                        -Ручное задание приоритета
                                                                                        -Автоматическое задание приоритета в зависимости от активности или еще чего-либо.
                                                                                  • 0
                                                                                    Как по мне то лучше всего сразу получать всем клиентам, потому что для меня важно history и заходить например на iPhone клиент ради того что бы посмотреть историю не охота, а так везде будет сохранена
                                                                                    • +1
                                                                                      остается только согласиться с выше высказавшимися:
                                                                                      1. сообщения на все устройства
                                                                                      2. синхронизация переписки
                                                                                      — все как в скайпе!
                                                                                      • +2
                                                                                        — все как в скайпе!

                                                                                        за исключением нотификейшинов, пусть оно синхронизирует, но тихонько :)
                                                                                        • 0
                                                                                          Но с записью в логе типа: Загружены сообщения в history для следующих контактов:…
                                                                                          и список в виде UIN+никнейм контакта в моем клиенте.
                                                                                          Если в списке 2-3 сотни контактов, и сегодня появился кто-то новый, при продолжении разговора с ним на другом устройстве бывает минут 10 список листаешь и пытаешься вспомнить его никнейм.
                                                                                        • 0
                                                                                          Всё как в скайпе, вот только давайте текстовое общение будет нормальным, и сообщения будут доходить здесь и сейчас, а не «как в скайпе», который при дохлом коннекте с телефона может принять сообщения завтра, послезавтра, никогда, etc.
                                                                                          • 0
                                                                                            ну в скайпе p2p, а в аське с этим проблем нет
                                                                                        • +2
                                                                                          Было бы классно, если бы сделали еще сохранение переписки на сервере с указанием IP и клиент-приложений.

                                                                                          P.S. Я за отправку сообщений на все подключенные соединения. Но при этом сделать так, что бы отправленные с одного устройства сообщения также отображались и на другом в режиме реального времени.
                                                                                          • +8
                                                                                            Так в XMPP же есть приоритет ресурса? Зачем придумывать что-то новое?

                                                                                            Приоритет — целое число, определённое для КАЖДОГО ресурса, и передаваемое клиентом(ам) как часть информации о присутствии. Стандартом допускаются приоритеты от -128 до +127, обычно используются приоритеты от 0 до 127 (отрицательные имеют специальное значение и не все программы-клиенты их допускают).

                                                                                            Приоритет определяет, какому из одновременно подключенных клиентов будет доставлено сообщение, если оно послано на неполный JID (на JID без указания ресурса). Сообщение в первую очередь придет клиенту с наивысшим приоритетом. Если таковых окажется несколько, то, как сказано в описании протокола XMPP, «сервер решает», кому будет доставлено послание. У большинства серверов сообщение доставляется всем клиентам с одинаковым приоритетом.

                                                                                            Некоторые серверы действуют немного иначе: сервер Google (JID'ы *@gmail.com) доставляет сообщение всем одновременно подключенным клиентам, если их приоритеты ниже 32. (Другими словами: приоритеты от 0 до 31 сервер gmail.com считает одним приоритетом.)

                                                                                            Если приоритет отрицателен, то сообщение придёт соответствующему ресурсу только в том случае, если оно послано именно ему по полному JID (c указанием ресурса).
                                                                                            • 0
                                                                                              1. Старые клиенты не знают про приоритеты.
                                                                                              2. Правильный приоритет всё равно должен определяться клиентом по какому-то алгоритмы, а не будет спускаться свыше.
                                                                                              • 0
                                                                                                1. Простите, насколько старые?
                                                                                                2. Если автоматический выбор приоритета — то на последний из которого ушло сообщение.
                                                                                                • 0
                                                                                                  1. Все существующие сейчас, на эту минуту.

                                                                                                  • 0
                                                                                                    Latest stable miranda.
                                                                                                    • 0
                                                                                                      И как это относится к протоколу ICQ?
                                                                                                      Клиентов, которые умеют приоритеты в XMPP — легион, конечно.
                                                                                            • 0
                                                                                              Я тоже за доставку всем клиентам, это упростит работу с ICQ для новых мобильных ОС, использующих PUSH.
                                                                                              • +2
                                                                                                Мне сложно представить алгоритм, который позволял бы полностью синхронизировать историю на всех устройствах без создания существенной нагрузки на сервер.
                                                                                                Скайп не очень хороший пример, потому что с оффлайн сообщениями там беда (и, насколько могу судить, синхронизация выполняется при участии своих же клиентов или клиентов собеседника).
                                                                                                • +1
                                                                                                  Хотя вариант с синхронизированной историей на всех клиентах — идеал. Я практически не использую ICQ на телефоне по той причине, что если я получу какие-то сообщения, то я не увижу их в истории на основной рабочей машине, что для меня очень критично (95% переписки — работа).
                                                                                                  • 0
                                                                                                    В скупе сообщения синхронизятся только если «собеседник» вошел в онлайн, а пока он не войдет — историю сообщ. я не получу
                                                                                                    • 0
                                                                                                      Насколько я помню, два инстанса скайпа от одного юзера могут друг с друга перетягивать историю.
                                                                                                      • 0
                                                                                                        Если например я напишу *с работы* *кому-то* сообщение, выключу скайп, *кто-то* тоже выключит скайп, я прийду *домой*, включу скайп — история мне не прийдет ровно до того момента как этот *кто-то* не включит скайп, или я не включу одновременно скайп находящийся *на работе* и *дома*. Т.е. пока один из собеседников учавствовавших в предыдущей беседе не зайдет в сеть.
                                                                                                        • 0
                                                                                                          Согласен. Просто зачастую *на работе* скайп остаётся включённым в «away» (по крайней мере, большинство моих собеседников делают именно так), потому я даже не рассматривал случай поочерёдной доступности.
                                                                                                          • +1
                                                                                                            А я вот заметил,
                                                                                                            например вечер, беседа из дому:
                                                                                                            человек вышел из скайпа, я в догонку написал, что-то типа «пока»,
                                                                                                            следующий день, беседа на работе с другого инстанса скайпа (сообщение «пока» осталось в домашней скайпе).
                                                                                                            вечер этого же дня, при входе издому собеседнику идет вообще не в тему старое сообщение «пока».
                                                                                                            И вот так у меня часто, как-то не удобно.
                                                                                                            • 0
                                                                                                              Так там же дата будет и время указаны, оно просто вклинится между старых сообщений. Не так страшно это.

                                                                                                              Жалко очень, что кроме скайпа никто это не умеет больше.
                                                                                                              • +1
                                                                                                                Ну по-моему оффлайн сообщения в той же аське удобнее, если я отправляю в догонку, то это сообщение прийдет при первом входе собеседника в сеть. Вот только синхронизации не хватает.
                                                                                                                • 0
                                                                                                                  Так в этом-то и принципиальная разница, в скайпе просто негде хранить оффлайновые сообщения.
                                                                                                                  • 0
                                                                                                                    Ну где-то же хранится информация о пользователях, вот туда бы и историю:) Хотя, возможно, их распределенная схема не позволяет так, в любом случае эта схема, по-моему, плохо подходит для аськи
                                                                                                                    • 0
                                                                                                                      Надо сказать, я уже достаточно давно продумываю схему полностью распределённого мессенджера, в котором информация о пользователях не будет храниться вообще нигде, кроме их собственных машин. Надо сказать, проблемы в этом большой нет, только разве что в том, что такой сетью «владеть» сложно — нет центра, из которого можно кого-то централизованно забанить, например.
                                                                                                                      • 0
                                                                                                                        Винт сгорел и всё? Спасение утопающих дело рук самих утопающих?
                                                                                                                        • 0
                                                                                                                          А как Вы решаете проблему, например, с SSH- и GnuPG-ключами? Вот так и здесь.
                                                                                                                          • 0
                                                                                                                            Ключи маленькие, способов бэкапа их миллион, включая простую распечатку на простой бумаге. Кроме того, они не меняются по сто раз за день.
                                                                                                                            • 0
                                                                                                                              Так а в чём здесь проблема бекапить маленькие ключи, которые не будут меняться по сто раз за день?
                                                                                                                              • 0
                                                                                                                                >в котором информация о пользователях не будет храниться вообще нигде, кроме их собственных машин.

                                                                                                                                История переписки может меняться и чаще, чем сто раз за день. Или история переписки пользователя это не информация о пользователе?
                                                                                                                                • 0
                                                                                                                                  Конечно же, нет. Это совершенно отдельная вещь, и она должна будет синхронизироваться аналогично тому, как это делается в скайпе.
                                                                                                                                  • 0
                                                                                                                                    Я бы не назвал синхронизацию в скайпе идеальной.
                                                                                                                                    • 0
                                                                                                                                      Согласен, она, бывает, глючит, т.к. сообщения почему-то привязываются ко времени странным образом: если у меня сбились часы, то всё пропало, шеф :)
                                                                                                                      • 0
                                                                                                                        Собственно, проблема на данный момент у меня только одна — нет времени взяться за реализацию даже прототипа.
                                                                                                                        • 0
                                                                                                                          Почему-то не вижу смысла держать всё «при себе», по-моему у джаббера достаточная децентрализованность.
                                                                                                                          • 0
                                                                                                                            Нет, жаббер не децентрализован в той мере, в которой хотелось бы. Умер сервер — что дальше? Он децентрализован лишь в той мере, что серверов много, но клиенты сами по себе беспомощны.
                                                                                                                            • 0
                                                                                                                              Вот оно че, теперь понял идею.
                                                                                                                              Но по-моему единственный способ реализации безопасности такого месседжера — соединение через внешний айпи каждого пользователя, и передачу сообщений уже просто по сокетам.
                                                                                                                              • 0
                                                                                                                                А как Вы думаете, скайп это делает? Просто в нём есть ахиллесова пята в виде сервера авторизации, без которого вполне можно обойтись. Ну и проприетарно-закрытый он.
                                                                                                                                • 0
                                                                                                                                  Ну вот через этот сервер он и делает, без него по-моему без айпи не подключишься клиентом к клиенту
                                                                                                                                  • 0
                                                                                                                                    Нет, он подключается напрямую. Принцип похожий на то, что в торрентах.
                                                                                                                                    • 0
                                                                                                                                      Не знаю как, но я затруднений при коннекте из-за провайдерского НАТа не испытываю. То есть сервер не только обеспечивает авторизацию, но и (как и в торрентах) гоняет айпишники клиентов, готовых принимать входящие подключения.
                                                                                                                                      • 0
                                                                                                                                        А причём здесь NAT? Я вроде как ничего не говорил про него, да и про «протыкание» NAT вроде как все знают… И да, с сервера происходит бутстрап сети, но это не значит, что коннекты идут через него. Так или иначе, в жаббере это всё сделано совсем по-другому.
                                                                                                                                        • 0
                                                                                                                                          >Просто в нём есть ахиллесова пята в виде сервера авторизации, без которого вполне можно обойтись.

                                                                                                                                          Я про это. Пускай без сервера авторизации мы обойдёмся, но сервер, который будет рассылать список доступных для подключения узлов всё равно нужен, а значит ахиллесова пята останется.
                                                                                                                                          • 0
                                                                                                                                            Вовсе нет. Во-первых, таких серверов может быть много, причём по-хорошему таким сервером может являться любой узел сети, а во-вторых, у нас может быть локальный кеш на n узлов сети.

                                                                                                                                            Кроме того, можно использовать инфраструктуру DNS для повышения вероятности того, что узлы будут on-line — например, узлы с очень большим аптаймом могут вноситься запиcями типа A и AAAA в какой-нибудь dht-bootstrap.mega-super-messenger.org.
                                                                                                                                            • 0
                                                                                                                                              Точнее, не «вовсе нет», но вероятность «убивания» сети гораздо меньше.
                                                                                                                                              • 0
                                                                                                                                                Может быть много и каждый узел сети им может быть (хотя я бы не хотел), но новому клиенту нужен хоть один гарантированно доступный адрес, если не устраивать «брутфорс».
                                                                                                      • –1
                                                                                                        Не такая уж и нагрузка большая для мылору хранить историю сообщений на своих серверах
                                                                                                        • 0
                                                                                                          Не только хранить, но и помнить, какие клиенты пользователя получали конкретные сообщения.
                                                                                                          • 0
                                                                                                            клиент сам может помнить айдишку последнего сообщения которое у него есть
                                                                                                            • +1
                                                                                                              тут еще могут возникнуть проблемы наподобие:
                                                                                                              пользователь установил аську на телефон, немного пообщался, вышел
                                                                                                              забыл про нее на день/месяц/год
                                                                                                              снова подключился, сколько ему присылать сообщений? за весь год?
                                                                                                              могут возникнуть либо магические константы, либо дополнительные настройки, либо проблемы безопасности
                                                                                                      • +4
                                                                                                        Не знаю, может у меня одного параноя, но если я вижу надпись «Ваш ICQ UIN запущен на другом компьютере» сразу хватаюсь за сердце с мыслями «угоняют»…

                                                                                                        • +5
                                                                                                          Если у вас делается аналог ресурсов в Jabber (когда ресурс — это некое символьное расширение JID, уникально идентифицирующее конкретный инстанс запущенный на каком-то из устройств типа:
                                                                                                          userbane@example.org/home
                                                                                                          userbane@example.org/work
                                                                                                          userbane@example.org/notebook
                                                                                                          userbane@example.org/mobile
                                                                                                          (причём обмен сообщениями возможен даже между разными ресурсами одного JID)

                                                                                                          То алгоритм доставки, по-моему, должен быть такой:
                                                                                                          1. Если сообщение отправляется на конкретный ресурс, то доставлять только на него.
                                                                                                          2. Если сообщение отправляется на сам JID без указания ресурса, то доставлять его всем.

                                                                                                          Если у вас будет реализовано не просто тегирование инстансов одного контакта (типа ресурсов в XMPP), но у каждого будет выставлен некий приоритет (как в XMPP), то можно доставлять согласно приоритету. Т.е. если сообщение отправлено без указания конкретного ресурса, то доставлять его ресурсу с максимальным приоритетом (или несколькои, если максимальный приоритет установлен сразу у нескольких). А если с указанием конкретного ресурса — то доставлять только ему, независимо от приоритетов.
                                                                                                          • –3
                                                                                                            Какой клиент позволяет указывать адресата как home/work/laptop/mobile?
                                                                                                        • +1
                                                                                                          Плевать на невозможнссть одновременно запускать клиент с нескольких компьютеров, больше волнует история. Хочу синхронизацию без сторонних утилит и шаманств с бубном.