Aplicações web real-time com Node.js
Caio Ribeiro PereiraPrefácio
As mudanças do mundo web
Tudo na web trata-se de consumismo e produção de conteúdo. Ler ou escrever blogs, assistir ou enviar vídeos, ver ou publicar fotos, ouvir músicas, e assim por diante. Fazemos isso naturalmente todos os dias na internet. E cada vez mais, a necessidade dessa interação aumenta entre os usuários com os diversos serviços da web.
De fato, o mundo inteiro quer interagir mais e mais na internet, seja por meio de conversas com amigos em chats, jogando games on-line, atualizando constantemente suas redes sociais ou participando de sistemas colaborativos. Esses tipos de aplicações requerem um poder de processamento extremamente veloz para que a interação em tempo real entre cliente e servidor seja eficaz. E mais, isto precisa acontecer em uma escala massiva, suportando entre centenas a milhões de usuários.
Então, o que nós, desenvolvedores e desenvolvedoras, precisamos fazer? Precisamos criar uma comunicação em tempo real entre cliente e servidor – que seja rápida, atenda muitos usuários ao mesmo tempo e utilize recursos de I/O (dispositivos de entrada ou saída) de forma eficiente. Qualquer pessoa com experiência em desenvolvimento web sabe que o HTTP não foi projetado para suportar estes requisitos. E pior, infelizmente, existem sistemas que os adotam de forma ineficiente e incorreta, implementando soluções workaround ("gambiarras") que executam constantemente requisições assíncronas no servidor – mais conhecidas como long-polling.
Para os sistemas trabalharem em tempo real, os servidores precisam enviar e receber dados utilizando comunicação bidirecional em vez de usar intensamente requisição e resposta do modelo HTTP pelo Ajax. Também temos de manter esse tipo comunicação de forma leve e rápida para continuar escalável, reutilizável e com um desenvolvimento fácil de ser mantido a longo prazo.
A quem se destina este livro?
Este livro é destinado aos desenvolvedores web que tenham, pelo menos, conhecimentos básicos de JavaScript e arquitetura cliente-servidor. Ter domínio desses conceitos, mesmo que seja um conhecimento básico, será essencial para que a leitura deste livro seja de fácil entendimento.
Como devo estudar?
Ao decorrer da leitura, serão apresentados diversos conceitos e códigos, para que você aprenda na prática toda a parte teórica do livro. A partir do capítulo "Iniciando com o Express" até o capítulo final, vamos desenvolver na prática um projeto web, utilizando os principais frameworks e aplicando as boas práticas de desenvolvimento JavaScript para Node.js.
Vale lembrar que este livro tem como pré-requisito saber programar e, principalmente, ter noções básicas de JavaScript, HTML e CSS.
Sumário
- 1 Bem-vindo ao mundo Node.js
- 1.1 O problema das arquiteturas bloqueantes
- 1.2 E assim nasceu o Node.js
- 1.3 Single-thread
- 1.4 Event-loop
- 1.5 Instalação e configuração
- 1.6 Gerenciando módulos com NPM
- 1.7 Entendendo o package.json
- 1.8 Escopos de variáveis globais
- 1.9 CommonJS, como ele funciona?
- 2 Desenvolvendo aplicações web
- 2.1 Criando nossa primeira aplicação web
- 2.2 Como funciona um servidor HTTP?
- 2.3 Trabalhando com diversas rotas
- 2.4 Separando o HTML do JavaScript
- 2.5 Desafio: implementando um roteador de URL
- 3 Por que o assíncrono?
- 3.1 Desenvolvendo de forma assíncrona
- 3.2 Assincronismo versus sincronismo
- 3.3 Entendendo o event-loop
- 3.4 Evitando callbacks hell
- 4 Iniciando com o Express
- 4.1 Por que utilizá-lo?
- 4.2 Instalação e configuração
- 4.3 Criando um projeto de verdade
- 4.4 Gerando o scaffold do projeto
- 4.5 Organizando os diretórios do projeto
- 5 Dominando o Express
- 5.1 Estruturando views
- 5.2 Controlando as sessões de usuários
- 5.3 Criando rotas no padrão REST
- 5.4 Aplicando filtros antes de acessar as rotas
- 5.5 Indo além: criando páginas de erros amigáveis
- 6 Programando sistemas real-time
- 6.1 Como funciona uma conexão bidirecional?
- 6.2 Conhecendo o framework Socket.IO
- 6.3 Implementando um chat real-time
- 6.4 Organizando o carregamento de Sockets
- 6.5 Compartilhando sessão entre Socket.IO e Express
- 6.6 Gerenciando salas do chat
- 6.7 Notificadores na agenda de contatos
- 6.8 Principais eventos do Socket.IO
- 7 Integração com banco de dados
- 7.1 Bancos de dados mais adaptados para Node.js
- 7.2 Instalando o MongoDB
- 7.3 MongoDB no Node.js utilizando Mongoose
- 7.4 Modelando com Mongoose
- 7.5 Implementando um CRUD na agenda de contatos
- 7.6 Persistindo estruturas de dados usando Redis
- 7.7 Mantendo um histórico de conversas do chat
- 7.8 Persistindo lista de usuários online
- 8 Preparando um ambiente de testes
- 8.1 Mocha, o framework de testes para Node.js
- 8.2 Criando um ambiente para testes
- 8.3 Instalando e configurando o Mocha
- 8.4 Rodando o Mocha no ambiente de testes
- 8.5 Testando as rotas
- 8.6 Deixando seus testes mais limpos
- 9 Aplicação Node em produção – Parte 1
- 9.1 Configurando clusters
- 9.2 Redis controlando as sessões da aplicação
- 9.3 Monitorando aplicação por meio de logs
- 9.4 Otimizações no Express
- 10 Aplicação Node em produção – Parte 2
- 10.1 Mantendo a aplicação protegida
- 10.2 Mantendo o sistema no ar com Forever
- 10.3 Externalizando variáveis de configurações
- 11 Node.js e Nginx
- 11.1 Servindo arquivos estáticos do Node.js usando o Nginx
- 12 Continuando os estudos
- 13 Bibliografia
Dados do produto
- Número de páginas:
- 186
- ISBN:
- 978-85-66250-14-5
- Data publicação:
- 05/2013. Atualizado em 09/2021.