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
Tweet

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