ActionCable: canais personalizados
O curso estuda canais do ActionCable a partir do único canal que esta aplicação roda: o Turbo::StreamsChannel, que vem da gem turbo-rails. As aulas explicam por que a aplicação não tem o diretório app/channels nem identidade na conexão. Mostram também como nomes de stream assinados autorizam inscrições com o ActiveSupport::MessageVerifier. Um canal descartável, testado com o ActionCable::Channel::TestCase, demonstra o stream_from e o stream_for. Depois vem o ciclo de vida da inscrição, com subscribed, reject e unsubscribed. No fim, um sinal de refresh do Turbo Stream é comparado com dados JSON enviados pelo broadcast_to.
O que você vai aprender
- ✓Como o Turbo::StreamsChannel se inscreve, verifica nomes de stream e rejeita
- ✓O que o identified_by faz e o que significa um identifiers vazio
- ✓Como nomes de stream assinados autorizam inscrições sem identidade de usuário
- ✓Como o stream_from e o stream_for registram streams, testados com o ActionCable::Channel::TestCase
- ✓Como o subscribe_to_channel, o reject e o stop_all_streams formam o ciclo de vida do canal
- ✓Quando transmitir um sinal de refresh e quando enviar um payload de dados em JSON
O único canal real desta aplicação não é personalizado
O app/channels/ não existe nesta aplicação. Não está vazio; o find app/channels não encontra nada. Mesmo assim a página do roadmap se atualiza ao vivo quando um admin reordena um curso, por um WebSocket, através de um canal do ActionCable. Esta aula trata do canal que faz isso, e a aplicação não o…
Ler a aula completa grátis →Currículo
7 aulasO único canal real desta aplicação não é personalizado
A aplicação não tem o diretório app/channels, e o único canal ao vivo é o Turbo::StreamsChannel da turbo-rails.
Conexões não têm identidade aqui
O que o identified_by faz e por que o identifiers vazio dá a toda conexão o mesmo identificador.
Nomes de stream assinados: a autorização real que esta aplicação tem
Como o Turbo assina nomes de stream com um MessageVerifier, e por que um token adulterado leva ao reject.
stream_from e stream_for, verificados ao vivo
Um canal descartável testado com ActionCable::Channel::TestCase mostra o stream_from e como o stream_for calcula nomes a partir de models.
subscribed, reject, unsubscribed: o ciclo de vida
Como o subscribe_to_channel chama o subscribed e confere a flag do reject depois, e como o stop_all_streams limpa as streams quando a inscrição termina.
Transmitindo dados personalizados vs HTML de Turbo Stream
Compara o sinal de refresh de 70 bytes do Turbo Stream com dados JSON enviados pelo broadcast_to.
Juntando tudo: um canal que esta aplicação nunca precisou
Uma revisão de cada mecanismo visto e um desafio, o BroadcastHub, que modela streams e broadcasts em Ruby simples.