Beacon API

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.

A Beacon API é usada para enviar um request assíncrono e não bloqueante para um servidor web. O request não espera por uma resposta. Ao contrário de requests feitos utilizando XMLHttpRequest ou Fetch, o navegador garante que irá iniciar e aguardar a conclusão do request antes da página ser desmontada.

O principal caso de uso da Beacon API é enviar dados de análise, como eventos do lado do cliente ou dados da sessão para o servidor. Historicamente, os sites costumavam usar XMLHttpRequest para isso, mas os navegadores não garantem o envio de solicitações assíncronas em algumas circunstâncias (por exemplo, se a página vai ser desmontada). Para evitar esses problemas, os sites usam diversas técnicas, como enviar o request síncrono, mas isso tem um efeito colateral ruim na responsividade. Como beacon requests são assíncronos quanto garantidas de serem enviados, elas combinam desempenho e confiabilidade.

Para mais detalhes sobre a motivação e uso dessa API, veja a documentação sobre o método navigator.sendBeacon()

Nota: essa API não está disponível nos Web Workers (não é exposta através do WorkerNavigator).

Interface

Essa API define apenas um método: navigator.sendBeacon().

O método recebe dois argumentos, a URL e os dados que serão enviados no request. Os dados são opcionais e seu tipo pode ser um TypedArray, DataView, Blob, uma string ou objeto, ou um objeto FormData. Se o navegador colocar na fila o request para ser executado com sucesso o método retornará true; se não retornará false.

Especificações

Specification
Beacon
# sendbeacon-method

Compatibilidade com navegadores

BCD tables only load in the browser

Veja também