- Solução aberta, fácil, rápida, estável e eficiente em consumo de bateria
- Envia atualizações de dados para navegadores web e outros clientes HTTP
- Especialmente útil para exibir atualizações assíncronas/em tempo real de recursos fornecidos por APIs web em aplicações web reativas e apps móveis
- Baseado puramente em HTTP: usa protocolos HTTP/2 ou superiores para oferecer comunicação bidirecional
- Tempo de resposta rápido e baixa latência
- Compatibilidade com navegadores em todos os ambientes sem necessidade de instalação adicional
- Publicação e assinatura simples
- Publicação (Publish): processada com uma simples requisição POST
- Assinatura (Subscribe): recebe atualizações em tempo real por meio de Server-Sent Events (SSE)
- Suporta reconexão automática e nova solicitação de mensagens perdidas quando a conexão é interrompida
- Projetado para APIs RESTful e GraphQL
- Oferece atualizações privadas por meio de autenticação JWT
- Fornece API de Presence para verificar o estado de conexão dos usuários. É possível rastrear estados de assinatura e eventos
- Event store: permite armazenar e gerenciar os eventos ocorridos
- Compatível com PHP e outras arquiteturas serverless
- Oferece E2EE (criptografia de ponta a ponta) para segurança total dos dados
- Fornece uma implementação de referência do Mercure Hub pronta para uso em produção
- Também inclui uma biblioteca e imagem oficial Docker que podem ser usadas para implementar diretamente o protocolo Mercure sem hub em qualquer aplicação Go
2 comentários
Fiquei curioso se, por ser baseado em SSE, a comunicação é unidirecional ou se também oferece suporte à comunicação bidirecional, como o WebSocket! 😮
Pelo que procurei até agora, parece que só suporta comunicação unidirecional (servidor -> cliente)... 🥺
https://medium.com/@sirajul.anik/…
A implementação do Mercure vem embutida no FrankenPHP, feito pela mesma pessoa.
https://pt.news.hada.io/topic?id=15103
Também existe o Pushpin, que pode ser uma alternativa no aspecto de oferecer um hub em tempo real.
https://pt.news.hada.io/topic?id=11377
Achei o Pushpin mais intuitivo que o Mercure (
rs... eu tinha preguiça demais de ler a documentação do Mercure), então antes usei o Pushpin em um projeto paralelo, mas da próxima vez quero experimentar este aqui.