Difference between revisions of "VKontakte/Jabber"
From JaWiki (Jabber/XMPP wiki)
(wikify) |
(→Ошибки на уровне протокола) |
||
Line 40: | Line 40: | ||
== Ошибки на уровне протокола == | == Ошибки на уровне протокола == | ||
− | * presence/x хэш по разности которого нужно определять необходимость загрузки новой аватарки может содержать имя jpeg файла (вместо SHA1 хэша). рассылать хэш это задача клиента, а не серверной части, но поскольку аватарка берется с сервера (а не задается клиентом), то серверная часть принудитель петчит презенсы от клиента, чтобы получилось <presence><show>xa</show><x xmlns><photo>ЗДЕСЬ_ХЕШ</ | + | * presence/x хэш по разности которого нужно определять необходимость загрузки новой аватарки может содержать имя jpeg файла (вместо SHA1 хэша). рассылать хэш это задача клиента, а не серверной части, но поскольку аватарка берется с сервера (а не задается клиентом), то серверная часть принудитель петчит презенсы от клиента, чтобы получилось <presence><show>xa</show><x xmlns><photo>ЗДЕСЬ_ХЕШ</photo></x></presence>. |
* Нет прямых iq запросов (невозможно узнать информацию о клиенте собеседника) | * Нет прямых iq запросов (невозможно узнать информацию о клиенте собеседника) | ||
* XEP-0085 используется лишь для отметки сообщений как прочитанных (на сайте), в полной же мере (информирование о наборе текста) расширение не поддерживается. XEP-0085 реализован фейково: оповещение приходит во время прочтения на сайте или же отправки оповещения на другой стороне. После этого, последующая отправка пауз и композов к получению этих состояний на другой стороне не приводит. | * XEP-0085 используется лишь для отметки сообщений как прочитанных (на сайте), в полной же мере (информирование о наборе текста) расширение не поддерживается. XEP-0085 реализован фейково: оповещение приходит во время прочтения на сайте или же отправки оповещения на другой стороне. После этого, последующая отправка пауз и композов к получению этих состояний на другой стороне не приводит. |
Latest revision as of 05:30, 12 October 2012
Замечания по реализации Jabber на сервисе «В Контакте».
Contents
Общее[edit]
- Отсутствие zlib сжатия.
- Отсутствие S2S не упоминаем как недостаток, потому что заявлено[1] о планах его открыть.
- Вопрос, зачем потребовалось реализовывать собственное серверное решение (VK XMPP) при наличии успешных проектов — ejabberd, Openfire, Prosody — остается открытым.
После окончания тестирования мы планируем сделать открытым код самого XMPP-сервера ВКонтакте, написанного Олегом Илларионовым на node.js.
Опыт других компаний указывает на то, что готовые решения предпочтительнее - 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 трафик запросов остаётся на стороне сервера, что позволяет экономить пользовательский трафик.
Особенности[edit]
Команды[edit]
VK XMPP сервер поддерживает несколько специальных текстовых команд:
- \history — покажет историю переписки (через пробел можно указать количество отображаемых сообщений)
- \delete — удаляет последнее сообщение
- \en — переводит далее введенный текст на английский язык (Google Translate)
- \ru — переводит далее введенный текст на русский язык
vCard[edit]
- Официальный лимит запросов данных - 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. (реплика от Евгений Бенну Сагатов)
Сообщения[edit]
- Официальный лимит отправки сообщений - 3 в сек.
- Сообщения самому себе запрещены.
- Невозможно отправить "0"
- Невозможно отправить один и тот же текст подряд повторно (даже разным пользователям)
- Содержат HTML спец. символы, а также HTML тэг <br>, причём тэг и сами спец. символы также кодируется спец. символами (&lt;br&gt;)
Ошибки на уровне протокола[edit]
- 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) используется некорректно - возвращает статусное сообщение пользователя.