Документация

Документация

Транспорт Web-SDK

Адрес#

Каждое событие — POST-запрос с JSON-телом на

https://<server><pathPrefix>/<urlMark>/t4k.json?dig=<хеш>&td_trans=<b|f>

server, pathPrefix (по умолчанию пусто) и urlMark (по умолчанию band) берутся из конфигурации. Имя сервиса track на пути заменяется на t4k; для других сервисов, к которым обращаются request и notify, путь имеет вид /<urlMark>/<service>.json.

Параметры строки запроса:

ПараметрОписание
digХеш тела запроса (cyrb53). Позволяет серверу отбрасывать дубликаты при повторах
td_transИспользованный транспорт: b — sendBeacon, f — fetch

Выбор транспорта#

События (page, event, автоматические, notify):

  1. navigator.sendBeacon, если он поддерживается и allowSendBeacon: true. Beacon не блокирует страницу и гарантированно доставляет данные при выгрузке страницы, поэтому page_unload успевает уйти.
  2. Если beacon отказал (очередь переполнена или тело больше 64 КБ) — fetch с keepalive: true и повторами через 1 и 5 секунд.

Запросы с ответом (request, опция request: true): всегда fetch, тайм-аут ответа 10 секунд, ответ разбирается как JSON. Повторов нет, чтобы не дублировать побочные эффекты на сервере.

Лог ошибок библиотеки: уходит в сервис log пикселем-изображением /<urlMark>/log.gif, данные в строке запроса. Этот же пиксель используется при опции transport_img: true.

Параметр конфигурацииПо умолчаниюОписание
allowSendBeacontrueИспользовать sendBeacon для событий
allowXHRtrueРазрешить fetch
activateWs, wsServer, wsPathfalseWebSocket. Зарезервировано, не используется

Протокол и HTTPS#

Запросы идут по https. Единственное исключение — страница открыта по http и в конфигурации стоит allowHTTP: true: тогда и события уходят по http, что рассчитано на локальную разработку с сервером на том же хосте.

Сервер должен отвечать на CORS: события уходят с Origin сайта. Beacon и fetch с телом text/plain не требуют preflight-запроса OPTIONS.

Ограничения размера#

Лимит sendBeacon — 64 КБ на запрос. Обычные события укладываются в несколько килобайт. Батчи записи сессии режутся по trackRecord.maxBatchBytes (по умолчанию 40 000 символов), чтобы вместе с конвертом сообщения не превышать лимит.

Проверить доставку проще всего во вкладке Network инструментов разработчика: фильтр по t4k.json, у каждого запроса должен быть ответ 200. Для просмотра тел сообщений подпишитесь на rstat4('onMessage', cb).

События unload и beforeunload ненадёжны в мобильных браузерах, поэтому page_unload может не доходить. Для оценки времени на странице используйте page_visibility и activity.