Use o código e tenha 10% de desconto!

Aplicações web real-time com Node.js

Caio Ribeiro Pereira

*Você terá acesso às futuras atualizações do livro.

Prefá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.

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter

*Você terá acesso às futuras atualizações do livro.