16 июля 2007 г.

Почему XMPP? Часть 1. Приоритет.

Уважаемые читатели. В условиях отсутствия идей для новых сообщений, я решил немного поупражняться в английском языке и перевести несколько попавшихся мне на глаза интересных статей. Они касаются Jabber и предназначены в первую очередь для тех людей, которых я активно призываю переходить на него с icq. Перевод достаточно вольный, и, возможно, местами корявый. Прошу прощения за все шероховатости, ежели таковые имеются. Ссылки на оригинал и страницу автора приведены в конце поста. Спасибо за внимание.

Почему XMPP? Часть 1. Приоритет.

Сейчас я хотел бы поговорить на одну из самых любимых мною тем - о протоколе XMPP. Я надеюсь, что этими постами я смогу убедить своих читателей, что XMPP - лучший из протоколов мгновенных сообщений. После того, как все будет сказано, у вас не останется сомнений в том, что вы хотите использовать XMPP в качестве основного способа передачи мгновенных интернет-сообщений.

Однако, прежде, чем я начну, я отвечу на вопрос - а почему "XMPP", а не "Jabber"? Ну, вообще-то, два этих термина равнозначны и я совсем не против использования одного термина вместо другого до тех пор, пока они используются правильно. Но, все-таки, есть небольшая разница. XMPP - это основной протокол Jabber, обертка, если позволите, которая используется Google Talk, Jabber.org и другими Jabber-серверами. Jabber же - термин, использующийся в отношении чего-то большего, нежели протокол. Jabber - компания, сервер-демон и приложение с открытым исходным кодом. XMPP - просто движок. Таким образом, здесь и далее, я буду говорить и об XMPP, и о Jabber, используя термин 'Jabber'.

С термином разобрались, давайте теперь обсудим основную, на мой взгляд, вкусность Jabber - приоритет. Представим себе следующее: допустим, из IM-сетей вы используете исключительно ICQ. Залогинившись дома, вы можете общаться с друзьями и родными с помощью ICQ. Однако, вы оставляете домашний компьютер и ICQ на нем включенными, уходя на работу, а придя на работу, вы снова логинитесь в сеть ICQ. Что происходит? Правильно, ваш домашний ICQ отключается, а вы входите в сеть с работы. (Прим. пере.: А ведь еще может и зациклиться логин дома и на работе, и вы вообще конкретно обломаетесь с выходом в сеть с работы - на полчаса забанят, дабы не доканывали вы сервер АОЛа священный логинами своими нечистивыми.) Иначе говоря, вы можете выходить в сеть под одним аккаунтом только с одного клиента в одно и то же время. Так же обстоит ситуация и с другими проприетарными протоколами: например, MSN, AIM или Yahoo!.

Теперь вы уходите с работы. Вы выключаете компьютер и отправляетесь домой. Из-за того, что вы вне сети дома, а компьютер на работе уже выключен, ваш аккаунт находится вне сети. И что же случается, если в это время кто-то из вашего контакт-листа хочет связаться с вами? Конечно, есть множество других способов: сотовый телефон или электронная почта, например. Однако, зачем же быть столь ограниченным из-за своих клиента и IM-сети? Если я хочу присутствовать в сети 24 часа в сутки, 7 дней в неделю, независимо от моего местонахождения, у меня вряд ли это получится с ICQ или другим проприетарным протоколом. По крайней мере, это будет очень непросто. К счастью, с Jabber все намного проще.

Во-первых, Jabber поддерживает несколько соединений с сервером, независимо от местонахождения и клиента. Это означает, что вы можете быть в сети одновременно и дома, и на работе, при этом оба соединения будут постоянно работать. И независимо от того, отключились ли вы на работе или нет, вы всегда будете подключены с домашнего компьютера (если конечно не случится конец света или провод не оборвется). Удобно, не правда ли? Вы можете быть подключены к сети из дома, школы, с работы, у друзей или где-нибудь еще.

Тут же возникает вопрос. Допустим, вы подключились дважды из дома: с настольного компьютера и лаптопа, при этом ваш компьютер на работе тоже подключен к Jabber-сети. Таким образом, вы подключены сразу с 3 клиентов. Теперь, ваш друг хочет прислать вам сообщение. На какой клиент оно поступит? К счастью, Jabber не упускает из виду и этот момент. При каждом подключении вы устанавливаете значение приоритета. Клиент с самым высоким приоритетом и получит это сообщение. На нижеприведенном графике (позаимствованном у O'Relly) приведена схема подобной ситуации.

Схема множественного подключения к Jabber-серверу

Таким образом, если приоритет подключения вашего лаптопа - 5, настольного компьютера - 15, а на работе - 8, то сообщение поступит на настольный домашний компьютер, так как у него самый высокий приоритет. Все просто. Где бы вы ни были, вы можете быть уверены, что сообщение поступит именно на тот клиент, доступ к которому вы имеете в данный момент времени: вы выставляете наиболее высокий приоритет и получаете новые сообщения без каких бы то ни было проблем независимо от числа подключенных к вашему аккаунту клиентов. Наибольший приоритет - 127, наименьший - 0.

Я думаю, теперь все поняли, что первая причина, по которой стоит переходить на Jabber - это наличие приоритетов и возможность множественного подключения. Можете ли вы получить нечто подобное от других IM-провайдеров? Сомневаюсь. Я, например, постоянно подключен с помощью centericq в screen на моем сервере. Приоритет равен 5, а статус постоянно away. Я им пользуюсь, когда я не нахожусь дома или на работе. И если кто-то хочет отправить мне сообщения, я постоянно доступен и могу получить сообщение в любой момент, подключившись к серверу по SSH. Дома и на работе я использую Gajim, с высоким приоритетом, чтобы всегда получать сообщения там, где я нахожусь (дома установлен приоритет 10, на работе - 15 на случай, если забуду отключиться дома).

© Aaron Toponce, 'Why XMPP Part 1- It’s All About Priority', немного вольный перевод: vonderer.

PS. После того, как этот пост появился на моей странице на beta.ya.ru, мне в комментариях deadcat указал на следующее:

"согласно RFC 3921, минимальное значение приориетета: -128 (минус 128).
http://tools.ietf.org/html/rfc3921
2.2.2.3. Priority
The OPTIONAL element contains non-human-readable XML character data that specifies the priority level of the resource. The value MUST be an integer between -128 and +127."

То есть, приоритетов может быть не 128, а вдвое больше. Единственная неувязка заключается здесь в том, что далеко не всякий клиент поддерживает отрицательные значения приоритета. Например, kopete (а значит, скорее всего и pidgin) не позволяет назначить отрицательное значение, а tkabber совершенно спокойно выставляет отрицательный приоритет.

13 комментариев:

ulmen комментирует...

привет :) отличный перевод, спасибо!

Ramaloke комментирует...

неплохо :)
переводи дальше

Stac комментирует...

У меня почему-то картинка не отображается со схемой... :(

MaKCuMyC комментирует...
Этот комментарий был удален автором.
MaKCuMyC комментирует...

и без картинки все ясно.

Анонимный комментирует...

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

Unknown комментирует...

Благодарю за обзор XMPP, и приглашаю на свой блог Tuxedo Live

Sergey Shepelev комментирует...

Skype поддерживает несколько соединений и при этом сообщения приходят на все подключенные клиенты.
Учитывая размер текстовых сообщений, в современных условиях трафик - несерьезный аргумент.
Вот вам "продуманный приоритет".

Анонимный комментирует...

никто не запрещал поставить одинаковые приоритеты
тогда сообщения будут приходить на все клиенты одновременно.

Johan комментирует...

Отрицательными приоритетами лучше вообще не пользоваться, т.к. при отрицательном приоритете сообщение вообще не будет доставлено, т.е. потеряется.

Анонимный комментирует...

>>Skype поддерживает несколько соединений и при этом сообщения приходят на все подключенные клиенты.
Учитывая размер текстовых сообщений, в современных условиях трафик - несерьезный аргумент.
Вот вам "продуманный приоритет".

А меня например напрягает когда я прихожу домой и мне приходиться перечитывать все рабочее говно за день

Анонимный комментирует...

Действительно, жизненная ситуация... Я куда ни прихожу, то обязательно включаю компьютер, запускаю пейджер, потом ухожу и оставляю пейджер включённым. Да-да. И так до 127 штук за день набирается. Кошмар! Спасибо джабберу, если бы не он, то я бы и не знал что делать со всем этим! Мега-полезная фича, базара нет... XD Преимущество, высосанное из пальца.

Анонимный комментирует...

Анонимный, ты осёл! Не надо думать что все остальные люди живут и делают всё точно так же как ты. Если тебе данный функционал не нужен, то другим он карайне полезен.
Эгоизм - не победить!

Отправить комментарий