Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GURUPI - Conhecendo Phoenix Liveview

GURUPI - Conhecendo Phoenix Liveview

Avatar for Alessandro Dias Batista

Alessandro Dias Batista

July 19, 2025

More Decks by Alessandro Dias Batista

Other Decks in Programming

Transcript

  1. Começo do anos 90 • Era tudo mato • A

    internet estava começando • DragonBall era exibido no SBT • Sites estáticos • PHP(1995), Java(1995), Ruby(1995) e Javascript(1995) sendo criados • Conexões HTTP não eram persistentes • Navegar entre páginas em sites era lento
  2. Final dos anos 90 • Sites começam a utilizar server

    side rendering • CSS é criado (1996) • Guerra dos navegadores • One piece começa • Adição da tag <iframe> • Conexões HTTP persistentes com HTTP 1.1 • Ajax é proposto
  3. Pós ano 2010 • Explode a criaçao de frameworks Javascript:

    Angular, Backbone, Ember, Vue, React, etc. • Surge o HTML5 • Surge Websockets • Surge o HTTP2 • Elixir é criado (2012) • Turbolinks é criado (2013) • Phoenix é criado (2014) • Phoenix LiveView é criado (2019) • Hotwire é criado (2020)
  4. O que é uma aplicação real time? É uma aplicação

    em que as informações são entregues da maneira mais rápida possível. Exemplo: • WhatsApp • Notificações do Ifood • Google docs • Twitch
  5. Pooling • Enviar requisições de em períodos de tempo determinados

    para verificar se existem mudanças • Problemas: ◦ Várias requisições desnecessárias ◦ Desperdício de recursos do servidor
  6. Long Pooling • Enviar requisições para verificar se existem mudanças

    e mantém a conexão aberta até ter dados ou atingir o timeout • Reduz a quantidade de conexões feitas, mas continua consumindo recursos desnecessários do servidor
  7. Websockets • Conexão estabelecida uma vez • Permite comunicação em

    ambos sentidos • Não precisa transmitir todos o headers que seriam transmitidos em uma requisição HTTP • Menor latência pois a conexão está sempre aberta
  8. Phoenix LiveView é uma biblioteca que fornece experiência de usuário

    realtime com renderização do lado do servidor, através de comunicação via WebSocket, necessitando de mínima escrita de Javascript e nenhuma em alguns casos.
  9. LiveView e Hotwire • Estado salvo no backend no "socket"

    • Não precisa escrever Javascript na maioria dos casos • Possui components de forma similar ao React • Cada página Live View e Stateful componentes são um processo separado • Estado salvo no HTML • Maioria das mudanças do DOM é feita via Stimulus • O Stimulus possui controllers mas não components