VKontakte/Jabber

From JaWiki (Jabber/XMPP wiki)
< VKontakte
Revision as of 12:14, 6 September 2010 by XProger (Talk | contribs) (Сообщения)

Jump to: navigation, search

Замечания по реализации Jabber на сервисе «В Контакте».

Общее

  • Отсутствие zlib сжатия.
  • Отсутствие S2S не упоминаем как недостаток, потому что заявленоTemplate:Ref о планах его открыть.
  • Вопрос, зачем потребовалось реализовывать собственное серверное решение (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 клиентом.
    • Общение напрямую с API несколько быстрее и информативнее, особенно в случае ошибок выполнения запросов.
    • Весь HTTP трафик запросов остаётся на стороне сервера, что позволяет экономить пользовательский трафик.

Особенности

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 пользователя

Сообщения

  • Сообщения самому себе запрещены.
  • Невозможно отправить "0"
  • Невозможно отправить один и тот же текст подряд повторно (даже разным пользователям)
  • Содержат HTML спец. символы, а также HTML тэг <br>, причём тэг и сами спец. символы также кодируется спец. символами (&amp;lt;br&amp;gt;)

Ошибки на уровне протокола

  • presence/x хэш по отличности которого нужно определять необходимость загрузки новой аватарки может содержать имя jpeg файла (вместо SHA1 хэша)
  • Нет прямых iq запросов (невозможно узнать информацию о клиенте собеседника)
  • XEP-0085 используется лишь для отметки сообщений как прочитанных (на сайте), в полной же мере (информирование о наборе текста) расширение не поддерживается.

Ошибки в реализации серверной части

Недоработки

Примечания

  1. Template:Note ответ на вопрос