navigator.sendBeacon?#web_api
Сегодня обсудим Web API
navigator.sendBeacon. Beacon API используется для отправки асинхронного и неблокирующего запроса на веб-сервер. Запрос не ожидает ответа. В отличие от XMLHttpRequest или Fetch-based запросов, браузер гарантирует отправку запрос до закрытия страницы или перехода на другую. Поэтому данный API рекомендованный способ для отправки аналитических данных. Его синтаксис:navigator.sendBeacon(url);navigator.sendBeacon(url, data);На данный url будет отправлен POST запрос. Его Content-Type будет зависит от аргумента data. По умолчанию это
'text/plain; charset=UTF-8'. Чтобы #nodejs код мог работать с таким типом контента необходимо включить соотвествующий парсер. В express это app.use(bodyParser.text());. Данные необходимо будет десерилизовать из текста.Чтобы работать с
application/json, клиент должен использовать такой код:const blob = new Blob([JSON.stringify(data)], { type: 'application/json' });navigator.sendBeacon(url, blob);Тогда на сервере мы сразу получаем JSON, с которым удобно работать.
Используйте данное API для построение своей системы аналитики.
Ссылки:
🔗 MDN
🔗 Can I use