Essa AULA em forma de vídeo reacendeu uma ideia que tinha em usar, nao necessariamente o websocket, mas o WebRTC junto com uma tecnologia que foi apresentada esse ano chamada WebContainer. Um exemplo de uso seria algo tipo, uma reunião virtual com servidor que roda direto no nanegador, dos os dados trafegariam pelo host da reunião sem a necessidade de um servidor fornecendo processamento desses dados. Inclusive, um Mão no código dessas duas ferramentas seria fantástico!!! (Não lembro se tem, vou ate procurar 😅)
@@codigofontetv Muito obrigado. Já tô pensando em melhorar o sistema de quiz que fiz. Ele atualmente funciona assíncrono usuário com o servidor. E agora posso ativar um modo síncrono. Liberando a turma para fazer o quiz em simultâneo, e em tempo real exibir o ranking
Quanto trabalho fico orgulhoso de quem tem essa disposição. Sou viciado em nocode ou lowcode, viciei na facilidade que é ajuda muito os programadores, é tudo de bom.
interessante. queria ver mais usos de websocket com proxy reverso, seja usando NGinX ou Kongo ou até Apache, pois um dos problemas que eu enfrento é o front não conseguir se comunicar corretamente com o backend usando websocket em portas distintas.
É possível fazer dois microsserviços em Node.js conversarem entre si usando WebSockets, assim como com um frontend. Esse poderia ser um fluxo básico de como você pode organizar isso: 1. Microsserviço 1 (MS1) - Esse pode ser o microsserviço principal, responsável por servir o frontend e estabelecer a primeira conexão WebSocket com ele. 2. Microsserviço 2 (MS2) - Esse é o segundo microsserviço que você deseja que converse com o MS1 e possivelmente com o frontend. 3. Frontend - Seu cliente web ou aplicativo que se comunica via WebSockets. FLUXO DE COMUNICAÇÃO: 1. O Frontend estabelece uma conexão WebSocket com o MS1. 2. O MS1 pode, por sua vez, estabelecer uma conexão WebSocket (ou qualquer outro protocolo de sua escolha, como HTTP ou gRPC) com o MS2 quando necessário. 3. Se o MS2 precisar enviar mensagens diretamente ao Frontend, ele pode fazer isso através do MS1 como um intermediário. Ou, em uma configuração mais complexa, o Frontend pode ter uma conexão WebSocket separada diretamente com o MS2. CONSIDERAÇÕES: 1. Desacoplamento: Um dos princípios dos microsserviços é o desacoplamento. Portanto, certifique-se de que o MS1 e o MS2 não se tornem excessivamente acoplados durante essa comunicação. 2. Segurança: Sempre pense na segurança ao usar WebSockets, especialmente se estiver expondo seus microsserviços ao público. Certifique-se de usar wss (WebSocket Secure) e considere autenticação e autorização. 3. Resiliência e Falhas: Microsserviços podem falhar. Se o MS2 cair, o MS1 e o Frontend devem ser capazes de lidar com essa situação. 4. Manutenção da Conexão: WebSockets são conexões persistentes. Certifique-se de que seus serviços possam lidar com a recriação de conexões se elas caírem. EXEMPLO SIMPLES: 1. MS1 - Usando o pacote ws em Node.js, estabeleça um servidor WebSocket. Quando o Frontend se conectar, mantenha uma referência para essa conexão. 2. MS2 - Ele pode também ter um servidor WebSocket ou apenas ser um cliente WebSocket que se conecta ao MS1. Se estiver usando o ws para ambos, lembre-se de que ele pode atuar como cliente e servidor. 3. Quando o MS1 recebe uma mensagem do Frontend que precisa ser processada pelo MS2, ele simplesmente encaminha essa mensagem. 4. Se o MS2 processa algo e precisa enviar uma resposta, ele envia essa resposta de volta ao MS1, que então encaminha ao Frontend. 5. O Frontend apenas se comunica com o MS1 (a menos que você também estabeleça uma conexão direta com o MS2). Para um sistema de produção, esse processo seria mais complexo, envolvendo tópicos como balanceamento de carga, descoberta de serviço, etc. No entanto, o conceito básico é o mesmo.
Na vps da hostinger coloquei o cpainel, ele é bom atente o cliente que entende pouco de tecnologia, mas não tem preparo para o nodejs e postgress. Tem como eu utilizar o painel que mostraram? Ou deixar os dois ativados. O cpainel é visualmente mais bonito e minimalista (facilita o usuário leigo utilizar), e o que mostrarem parece ser mais completo
Se estiver utilizando o litespeed, basta acessar o painel pelo IP do servidor na porta 7080. Nós ensinamos a usar e configurar esse painel nesse vídeo: th-cam.com/video/MiAiFTQjitc/w-d-xo.htmlsi=hbmjfnTdbti6cit7 É possível sim instalar o Node e muitas outras stacks no VPS da Hostinger
Muito bom conteúdo como sempre. Fiquei só com dúvida em duas coisas: - Porque no server.js chamar o array de clients nas funções sempre por wss.clients se os mesmo é definido no escopo global? Não poderia ser só clients? - Não seria mais seguro deixar a geração do código de confirmação para o server side?
Não sabia da possibilidade de se fazer uma aplicação sem nenhuma engine como ejs ou handlebars. Alguém pode dizer se, para projetos maiores seria interessante utilizar uma ou se não haveria problema em adotar essa abordagem, independente da complexidade?
Sou do Java, lá tudo é muito bem separado, cada classe com a sua responsabilidade, primeira vez que vejo node na prática, curioso como o código é bem " clean ", essa estrutura de misturar tudo, varias constantes e funções na mesma classe, é um padrão? Em aplicações grandes, Solid é usado?
Não, isso não é nada padrão e é até considerado um "anti-pattern". Porém creio eu que eles fizeram assim pois é uma aplicação simples (nem TS usa) e explicativa
Cara não sei se vocês estãos acompanhando o lance todo da Unity cobrar por instalação, mas tem um aspecto dessa seara que NINGUÉM ta falando e tem um potencial astronomico de dar MERDA. Como a Unity vai distinguir instalações legítimas de instalações piratas? Pense sobre a ética / vulnerabilidade e privacidade desse sistema! Não precisa julgar esse sistema ou a unity, só ventilar esse questionamento na comunidade, é quase uma utilidade pública! Pensa com carinho.
Como é legal ver funcionando, né? Simples e incrível, parabéns!
Sensacional! Incrível como eu estava a procura de algo como isso e me deparo com esse vídeo espetacular. Parabéns!
Que bom que o conteúdo ajudou! 🤓🫶
Simples, rápido e eficiente!
Conteúdo melhor não há!
Eu estava com dificuldade para entender o funcionamento do websocket e esse vídeo me ajudou bastante! Obrigado ❤
Como é legal ver funcionando...top de mais galera
Explicação maravilhosa, parabéns!! Ótimo vídeo, muito útil !
meu repositório de código fonte preferido
❤️❤️❤️
Explicaçao incrivel parabens!
Obrigado 😃
Show muito legal depois criem um exemplo de vídeo chamada usando o websockets
Esse canal é muito bacana. Obrigado por toda ajuda.
Obrigado pelas palavras! 🫶
Essa AULA em forma de vídeo reacendeu uma ideia que tinha em usar, nao necessariamente o websocket, mas o WebRTC junto com uma tecnologia que foi apresentada esse ano chamada WebContainer. Um exemplo de uso seria algo tipo, uma reunião virtual com servidor que roda direto no nanegador, dos os dados trafegariam pelo host da reunião sem a necessidade de um servidor fornecendo processamento desses dados. Inclusive, um Mão no código dessas duas ferramentas seria fantástico!!! (Não lembro se tem, vou ate procurar 😅)
Show!
🧡muito massa! faz um tempinho que deixo pra depois o estudo de WS. Parece que esse dia chegou 😁
Boa! Vai fundo, tem muito uso legal e dá pra pensar em muitas aplicações do dia a dia.
@@codigofontetv Muito obrigado. Já tô pensando em melhorar o sistema de quiz que fiz. Ele atualmente funciona assíncrono usuário com o servidor. E agora posso ativar um modo síncrono. Liberando a turma para fazer o quiz em simultâneo, e em tempo real exibir o ranking
Excelente. Obrigado
❤❤❤
Quanto trabalho fico orgulhoso de quem tem essa disposição.
Sou viciado em nocode ou lowcode, viciei na facilidade que é ajuda muito os programadores, é tudo de bom.
muito legal, parabéns
Muito obrigada 😁
Mais um inscrito! ❤
Bem vindo ao CDFTV! ❤
estava nessa palestra
Sou novo com esse framework "WebSocket".queria um curso completo dele.
interessante. queria ver mais usos de websocket com proxy reverso, seja usando NGinX ou Kongo ou até Apache, pois um dos problemas que eu enfrento é o front não conseguir se comunicar corretamente com o backend usando websocket em portas distintas.
muito bom o conteudo. :D
Muito TOP!
Minha dificuldade com websocket é fazer dois microsservicos em node conversarem entre si e com um front. Ele n separa a sessa9
Usa redis e usa id da sala e dos usuários, quem ouve vai ver todos os eventos mas tu filtra pelo id daí tipo: event_room_1267_user_23
É possível fazer dois microsserviços em Node.js conversarem entre si usando WebSockets, assim como com um frontend. Esse poderia ser um fluxo básico de como você pode organizar isso:
1. Microsserviço 1 (MS1) - Esse pode ser o microsserviço principal, responsável por servir o frontend e estabelecer a primeira conexão WebSocket com ele.
2. Microsserviço 2 (MS2) - Esse é o segundo microsserviço que você deseja que converse com o MS1 e possivelmente com o frontend.
3. Frontend - Seu cliente web ou aplicativo que se comunica via WebSockets.
FLUXO DE COMUNICAÇÃO:
1. O Frontend estabelece uma conexão WebSocket com o MS1.
2. O MS1 pode, por sua vez, estabelecer uma conexão WebSocket (ou qualquer outro protocolo de sua escolha, como HTTP ou gRPC) com o MS2 quando necessário.
3. Se o MS2 precisar enviar mensagens diretamente ao Frontend, ele pode fazer isso através do MS1 como um intermediário. Ou, em uma configuração mais complexa, o Frontend pode ter uma conexão WebSocket separada diretamente com o MS2.
CONSIDERAÇÕES:
1. Desacoplamento: Um dos princípios dos microsserviços é o desacoplamento. Portanto, certifique-se de que o MS1 e o MS2 não se tornem excessivamente acoplados durante essa comunicação.
2. Segurança: Sempre pense na segurança ao usar WebSockets, especialmente se estiver expondo seus microsserviços ao público. Certifique-se de usar wss (WebSocket Secure) e considere autenticação e autorização.
3. Resiliência e Falhas: Microsserviços podem falhar. Se o MS2 cair, o MS1 e o Frontend devem ser capazes de lidar com essa situação.
4. Manutenção da Conexão: WebSockets são conexões persistentes. Certifique-se de que seus serviços possam lidar com a recriação de conexões se elas caírem.
EXEMPLO SIMPLES:
1. MS1 - Usando o pacote ws em Node.js, estabeleça um servidor WebSocket. Quando o Frontend se conectar, mantenha uma referência para essa conexão.
2. MS2 - Ele pode também ter um servidor WebSocket ou apenas ser um cliente WebSocket que se conecta ao MS1. Se estiver usando o ws para ambos, lembre-se de que ele pode atuar como cliente e servidor.
3. Quando o MS1 recebe uma mensagem do Frontend que precisa ser processada pelo MS2, ele simplesmente encaminha essa mensagem.
4. Se o MS2 processa algo e precisa enviar uma resposta, ele envia essa resposta de volta ao MS1, que então encaminha ao Frontend.
5. O Frontend apenas se comunica com o MS1 (a menos que você também estabeleça uma conexão direta com o MS2).
Para um sistema de produção, esse processo seria mais complexo, envolvendo tópicos como balanceamento de carga, descoberta de serviço, etc. No entanto, o conceito básico é o mesmo.
@@codigofontetv Que aula!
@codigofonte adoraria ver isto em vídeo. Seria maravilhoso e n é um conteúdo q se acha na Internet fácil
Backend ❤
Na vps da hostinger coloquei o cpainel, ele é bom atente o cliente que entende pouco de tecnologia, mas não tem preparo para o nodejs e postgress.
Tem como eu utilizar o painel que mostraram? Ou deixar os dois ativados.
O cpainel é visualmente mais bonito e minimalista (facilita o usuário leigo utilizar), e o que mostrarem parece ser mais completo
Se estiver utilizando o litespeed, basta acessar o painel pelo IP do servidor na porta 7080. Nós ensinamos a usar e configurar esse painel nesse vídeo:
th-cam.com/video/MiAiFTQjitc/w-d-xo.htmlsi=hbmjfnTdbti6cit7
É possível sim instalar o Node e muitas outras stacks no VPS da Hostinger
Façam um vídeo da stack que mais emprega juninhos por favor
Como mandar uma mensagem para o servidor no handleSocketClose()? fiz o teste aqui, mas parece que como a conexão é fechada, ele não entra na função
Muito bom conteúdo como sempre. Fiquei só com dúvida em duas coisas:
- Porque no server.js chamar o array de clients nas funções sempre por wss.clients se os mesmo é definido no escopo global? Não poderia ser só clients?
- Não seria mais seguro deixar a geração do código de confirmação para o server side?
Não sabia da possibilidade de se fazer uma aplicação sem nenhuma engine como ejs ou handlebars. Alguém pode dizer se, para projetos maiores seria interessante utilizar uma ou se não haveria problema em adotar essa abordagem, independente da complexidade?
Seria bacana a criação de um chat em tempo real dessa forma! Que tal a ideia?
:o tenho muito que treinar e estudar ;o
Eu usaria mais arrow functions.
Nós costumamos usar, mas nesse caso deixamos elas no modo “padrão” para não assustar devs de outras linguagens.
Sou do Java, lá tudo é muito bem separado, cada classe com a sua responsabilidade, primeira vez que vejo node na prática, curioso como o código é bem " clean ", essa estrutura de misturar tudo, varias constantes e funções na mesma classe, é um padrão? Em aplicações grandes, Solid é usado?
não é padrão, e sim rola usar SOLID, embora pra mim faça mais sentido com Typescript
Não, isso não é nada padrão e é até considerado um "anti-pattern". Porém creio eu que eles fizeram assim pois é uma aplicação simples (nem TS usa) e explicativa
fui o segundo skskks
muitoo to0pp
Cara não sei se vocês estãos acompanhando o lance todo da Unity cobrar por instalação, mas tem um aspecto dessa seara que NINGUÉM ta falando e tem um potencial astronomico de dar MERDA.
Como a Unity vai distinguir instalações legítimas de instalações piratas? Pense sobre a ética / vulnerabilidade e privacidade desse sistema!
Não precisa julgar esse sistema ou a unity, só ventilar esse questionamento na comunidade, é quase uma utilidade pública! Pensa com carinho.
COMO ASSIM VCS USARAM NODE E NÃO O BUN?????? AAAAAHHHHH!!!! AAAAAAAHHHHH!!!!!! 😱😱😡😡😡
Ele ainda não tinha sido lançado quando criamos a aplicação. Agora na versão 1.0 já temos um fork do repositório usando Bun e está 🚀
Está aí... refatoramos a aplicação para usar Bun: th-cam.com/video/ImzqKFU0d_U/w-d-xo.html