Pull to refresh
VK
Building the Internet

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

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

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'ов, добровольцы могут прислать свои номера приватно.

Заранее спасибо за помощь!
Tags:
Hubs:
+71
Comments 261
Comments Comments 261

Articles

Information

Website
vk.com
Registered
Founded
Employees
5,001–10,000 employees
Location
Россия
Representative
Миша Берггрен