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