Latest revision |
Your text |
Line 1: |
Line 1: |
− | Замечания по реализации Jabber на сервисе «[[В Контакте]]». | + | = Замечания по реализации Jabber на сервисе [[ВКонтакте]] = |
| | | |
| == Общее == | | == Общее == |
− | * Отсутствие zlib сжатия.
| + | * Отсутствие [[S2S]] не упоминаем как недостаток, потому что заявлено о планах его открыть. {{todo|источник?}} |
− | * Отсутствие [[S2S]] не упоминаем как недостаток, потому что заявлено<ref>[http://twitter.com/vkontakte/status/18439413874 ответ] на [http://twitter.com/vladon/status/18438708179 вопрос]</ref> о планах его открыть. | + | * Вопрос, зачем потребовалось реализовывать собственное серверное решение (VK XMPP) при наличии успешных проектов — [[ejabberd]], [[Openfire]], [[Prosody]] — остается открытым. <blockquote>После окончания тестирования мы планируем сделать открытым код самого XMPP-сервера ВКонтакте, написанного Олегом Илларионовым на node.js. {{todo|источник?}}</blockquote> |
− | * Вопрос, зачем потребовалось реализовывать собственное серверное решение (VK XMPP) при наличии успешных проектов — [[ejabberd]], [[Openfire]], [[Prosody]] — остается открытым. {{цитата|После окончания тестирования мы планируем сделать открытым код самого XMPP-сервера ВКонтакте, написанного [http://vkontakte.ru/illarionov Олегом Илларионовым] на [[node.js]].|2=[http://vk.com/pages.php?id=27987544 vk.com/pages.php?id=27987544]}} | + | |
| Опыт других компаний указывает на то, что готовые решения предпочтительнее - [[Facebook]] выбрал [[ejabberd]], [[LiveJournal]] изначально использовал собственную разработку [[djabberd]], но в последствии мигрировал на [[ejabberd]]. | | Опыт других компаний указывает на то, что готовые решения предпочтительнее - [[Facebook]] выбрал [[ejabberd]], [[LiveJournal]] изначально использовал собственную разработку [[djabberd]], но в последствии мигрировал на [[ejabberd]]. |
− | * Заявлена поддержка TLS, SASL, XEP-0030, XEP-0092, XEP-0012, XEP-0202, XEP-0199, XEP-0158, XEP-0054, XEP-0085.
| |
− | * Изначально изменение статусов в клиенте приводило к изменению статуса на сайте, но в последующем это было изменено. Теперь статус для установки на сайте должен начинаться с точки.
| |
− | * VK XMPP является прослойкой между VK API и XMPP клиентом.
| |
− | ** Общение напрямую с VK API несколько быстрее и информативнее, особенно в случае ошибок выполнения запросов.
| |
− | ** Весь HTTP трафик запросов остаётся на стороне сервера, что позволяет экономить пользовательский трафик.
| |
− |
| |
− | == Особенности ==
| |
− | === Команды ===
| |
− | VK XMPP сервер поддерживает несколько специальных текстовых команд:
| |
− | * \history — покажет историю переписки (через пробел можно указать количество отображаемых сообщений)
| |
− | * \delete — удаляет последнее сообщение
| |
− | * \en — переводит далее введенный текст на английский язык (Google Translate)
| |
− | * \ru — переводит далее введенный текст на русский язык
| |
− |
| |
− | === vCard ===
| |
− | * Официальный лимит запросов данных - 2-3 в сек (экпериментально до 50)
| |
− | * Для некоторых пользователей сервер по непонятным причинам может не выдавать vCard до повторной авторизации, никак не информируя об этом соответствующим iq ответом.
| |
− | * vCard также молча не возвращается если сервер на котором находится аватарка недоступен.
| |
− | * В качестве image/jpeg может прийти закодированная в base64 страничка HTML 404
| |
− | * Двойной пробел в ответном iq
| |
− | * vCard несёт в себе только:
| |
− | ** URL - домен_пользователя.vk.com (нерабочий)
| |
− | ** PHOTO - jpeg 50xN без прогрессии (либо HTML 404)
| |
− | ** UID - vk ID пользователя
| |
− | * vCard всегда выдает тип изображения image/jpeg. На самом деле вконтактовский значок вопроса это gif. (реплика от ''Евгений Бенну Сагатов'')
| |
− |
| |
− | === Сообщения ===
| |
− | * Официальный лимит отправки сообщений - 3 в сек.
| |
− | * Сообщения самому себе запрещены.
| |
− | * Невозможно отправить "0"
| |
− | * Невозможно отправить один и тот же текст подряд повторно (даже разным пользователям)
| |
− | * Содержат HTML спец. символы, а также HTML тэг <br>, причём тэг и сами спец. символы также кодируется спец. символами (&amp;lt;br&amp;gt;)
| |
| | | |
| == Ошибки на уровне протокола == | | == Ошибки на уровне протокола == |
− | * presence/x хэш по разности которого нужно определять необходимость загрузки новой аватарки может содержать имя jpeg файла (вместо SHA1 хэша). рассылать хэш это задача клиента, а не серверной части, но поскольку аватарка берется с сервера (а не задается клиентом), то серверная часть принудитель петчит презенсы от клиента, чтобы получилось <presence><show>xa</show><x xmlns><photo>ЗДЕСЬ_ХЕШ</photo></x></presence>.
| |
− | * Нет прямых iq запросов (невозможно узнать информацию о клиенте собеседника)
| |
− | * XEP-0085 используется лишь для отметки сообщений как прочитанных (на сайте), в полной же мере (информирование о наборе текста) расширение не поддерживается. XEP-0085 реализован фейково: оповещение приходит во время прочтения на сайте или же отправки оповещения на другой стороне. После этого, последующая отправка пауз и композов к получению этих состояний на другой стороне не приводит.
| |
− | * Запрос roster'a игнорируется в случае, если у пользователя большое число друзей (экспериментально от 500)
| |
− | * namespace "jabber:iq:last" (XEP-0012) используется некорректно - возвращает статусное сообщение пользователя.
| |
| | | |
| == Ошибки в реализации серверной части == | | == Ошибки в реализации серверной части == |
| | | |
| == Недоработки == | | == Недоработки == |
− |
| |
− | == Примечания ==
| |
− |
| |
− | <references/>
| |