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

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

Caio Ribeiro Pereira

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. Isso fazemos 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 online, 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, 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. 

Nesta nova edição, você vai aprender os principais conceitos sobre a plataforma Node.js, usando códigos da nova implementação do JavaScript, o EcmaScript 6/7, que já é compatível com a versão Node.js 9.3.0, junto do NPM 5.5.1, versões utilizadas neste livro.

 

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:
185
ISBN:
978-85-66250-14-5
Data publicação:
05/2013

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter