Каждое событие — 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):
navigator.sendBeacon, если он поддерживается и allowSendBeacon: true. Beacon не блокирует
страницу и гарантированно доставляет данные при выгрузке страницы, поэтому page_unload
успевает уйти.fetch с keepalive: true
и повторами через 1 и 5 секунд.Запросы с ответом (request, опция request: true): всегда fetch, тайм-аут ответа
10 секунд, ответ разбирается как JSON. Повторов нет, чтобы не дублировать побочные эффекты на
сервере.
Лог ошибок библиотеки: уходит в сервис log пикселем-изображением /<urlMark>/log.gif,
данные в строке запроса. Этот же пиксель используется при опции transport_img: true.
| Параметр конфигурации | По умолчанию | Описание |
|---|---|---|
allowSendBeacon | true | Использовать sendBeacon для событий |
allowXHR | true | Разрешить fetch |
activateWs, wsServer, wsPath | false | WebSocket. Зарезервировано, не используется |
Запросы идут по 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.