‫Este vídeo é mais um realmente empolgante,
‫porque agora vamos criar nosso
‫primeiro servidor web real, capaz de aceitar solicitações
‫e enviar respostas.
‫E o primeiro passo é incluir mais um pacote ou outro
‫módulo, e
‫este se chama http.
‫Portanto, estamos usando a
‫função require novamente e, em seguida, exigindo o módulo
‫http integrado, que nos dá recursos de
‫rede, como construir um servidor http.
‫Agora, vamos comentar esse código
‫aqui para que ele não atrapalhe.
‫Então, vamos criar uma espécie de divisor aqui.
‫Portanto, este é
‫arquivado e este é para o servidor.
‫E agora, para construir nosso servidor, temos
‫que fazer duas coisas.
‫Primeiro, criamos um servidor
‫e, em seguida, iniciamos o servidor
‫para que possamos realmente ouvir as solicitações recebidas.
‫Usamos nosso módulo http e, como antes, usamos um
‫método que está naquele objeto.
‫Assim como fizemos com o módulo fs.
‫Portanto, http. createServer e
‫create server aceitarão uma função de retorno de chamada,
‫que será disparada cada vez que
‫uma nova solicitação chegar ao nosso servidor.
‫E essa função de retorno de
‫chamada obtém acesso a duas variáveis muito importantes e fundamentais.
‫É a variável de solicitação e uma variável de resposta.
‫E um pouco mais sobre eles em um segundo.
‫Então, solicitação e
‫resposta, tudo o que queremos
‫fazer agora é realmente enviar de volta uma resposta
‫ao cliente e fazemos isso com res. que é este objeto aqui, este objeto de resposta,. final e, em seguida, 'Hello
‫from the server! '. fim e, em seguida, 'Olá do servidor! '.
‫Essa é a resposta que vamos enviar de volta.
‫Então, novamente, cada vez
‫que uma nova solicitação chega ao nosso servidor, esta função de retorno de chamada aqui será chamada,
‫e a função de retorno de chamada terá acesso ao objeto de solicitação
‫que contém todos os tipos de coisas como o url da
‫solicitação e um monte de outras coisas.
‫Por outro lado, este objeto de
‫resposta aqui nos fornece muitas ferramentas basicamente para lidar
‫com a resposta, portanto, para
‫enviar a resposta.
‫O mais simples é. fim, e esse fim aqui, a
‫nomenclatura desse método fará um pouco mais de sentido
‫um pouco mais tarde.
‫Por enquanto, apenas saiba que esta é a maneira mais simples de
‫enviar uma resposta muito, muito simples neste caso.
‫Isso é tudo o que precisamos
‫fazer para enviar uma resposta em texto simples quando
‫uma determinada solicitação chega.
‫Agora, se você está um pouco confuso sobre
‫todos esses termos, como
‫solicitação de entrada ou envio de respostas, ou mesmo
‫sobre por que realmente temos solicitações e respostas aqui em nosso
‫servidor, não se preocupe, porque temos uma palestra inteira
‫chegando sobre como a web funciona, onde falaremos tudo
‫sobre o modelo cliente-servidor e realmente como
‫os aplicativos de rede funcionam em geral.
‫Novamente, nesta seção, meu foco principal é realmente mostrar
‫a você todas as coisas e realmente fazer com
‫que funcione, e então a teoria
‫seguirá um pouco mais tarde.
‫Essa é a filosofia que
‫usei em todos os meus outros cursos,
‫e tem funcionado muito
‫bem, então acredito que seja uma boa coisa fazer aqui também.
‫De qualquer forma, criar um
‫servidor foi a primeira parte, e
‫agora a segunda parte é realmente ouvir as solicitações recebidas do cliente.
‫Agora, para fazer isso, realmente precisamos salvar
‫o resultado deste createServer aqui em uma nova variável.
‫Então, normalmente o chamamos de servidor, portanto, servidor
‫é o resultado deste método createServer aqui.
‫Então ele vai criar um
‫servidor, e agora vamos usar esse servidor e nele podemos chamar listen.
‫Listen aceita alguns parâmetros, o primeiro é a
‫porta e, normalmente, a porta
‫que usamos no Note é, por exemplo, 8000.
‫Mas você verá outros
‫números como 3000, 80 ou algo assim.
‫E caso você esteja se perguntando o que
‫realmente é uma porta, bem, isso realmente não importa, mas tudo o
‫que você precisa saber é que é basicamente um subendereço
‫em um determinado host, e
‫o host é o que especificaremos a seguir.
‫Na verdade, não precisamos especificá-lo e então
‫definiremos como padrão um host local,
‫mas podemos especificá-lo
‫também para o host local explicitamente.
‫Portanto, o host local geralmente tem esse endereço como padrão, e
‫o host local significa simplesmente o computador atual.
‫Portanto, o computador em que o programa está sendo executado.
‫E, novamente, este é
‫o endereço IP padrão para esse host local.
‫Portanto, este aqui começará a escutar as solicitações de entrada.
‫Então, basicamente, inicializando o servidor.
‫E como um argumento opcional, também podemos passar uma função
‫de retorno de chamada,
‫que será executada assim que
‫o servidor realmente começar a escutar.
‫Portanto, aqui é bastante comum simplesmente exibir uma mensagem de
‫que o servidor foi iniciado.
‫Digamos que você esteja ouvindo solicitações na porta 8000.
‫E agora tudo o que precisamos fazer
‫é acessar esse url em nosso computador na porta 8000.
‫Agora, antes de fazermos isso,
‫é claro, temos que executar o aplicativo Note, portanto,
‫note index. js, e aqui temos nosso bloqueio.
‫Então, ouvindo a solicitação na porta 8000.
‫E você vê que
‫o aplicativo continua rodando, então antes ele
‫sempre parava imediatamente, então fazia seu trabalho
‫e então fechava o aplicativo.
‫No momento, isso não acontece.
‫Isso se deve a algo chamado
‫loop de eventos, sobre o qual falaremos
‫um pouco mais tarde, em outra seção deste curso.
‫Mas, não importa quais sejam os motivos
‫técnicos para isso, é óbvio que o aplicativo
‫não pode realmente sair imediatamente, porque então não poderíamos receber novos pedidos.
‫Portanto, quando iniciamos um servidor, o Note não
‫pode simplesmente sair do processo e sair do programa,
‫porque o objetivo
‫é esperar que as solicitações cheguem.
‫Então é isso que vou mostrar a você.
‫Por enquanto, vamos apenas abrir o endereço IP na porta 8000.
‫E para isso usamos os dois pontos e, em seguida, o número da porta.
‫Portanto, este é o host, que é o host local,
‫dois pontos e o número da porta.
‫Pressione Enter e aqui vamos nós.
‫Então, olá do servidor!
‫E então sim, realmente funciona.
‫Você tem um servidor web real rodando em
‫seu computador usando NoteJS, parabéns.
‫Então, vamos voltar aqui e, novamente, analisar o que aconteceu aqui.
‫Criamos nosso servidor, usando createServer e passamos uma
‫função de retorno de chamada que é executada cada vez que
‫uma nova solicitação chega ao servidor, e então
‫começamos a escutar as
‫solicitações de entrada no IP do host
‫local e, em seguida, na porta 8000.
‫Depois que tudo isso estava funcionando, realmente fizemos a
‫solicitação acessando esse url.
‫Basicamente, acessando o host local na porta 8000.
‫Então, sob o
‫capô do NoteJS, um evento foi disparado que
‫é algo sobre o qual, novamente, falaremos um pouco mais tarde.
‫Mas o que importa aqui é que esse evento
‫fez com que essa função de retorno de chamada fosse chamada.
‫E, finalmente, como resultado
‫disso, recebemos essa string de volta.
‫Apenas por uma questão de curiosidade, vamos dar
‫uma olhada no objeto de solicitação.
‫Precisamos fechar o servidor e
‫reiniciá-lo porque fizemos algumas alterações no código.
‫E observe como desta vez eu realmente usei o controle C
‫para sair do aplicativo.
‫Portanto, lembre-se de que no início, quando usamos
‫a ondulação, usei o controle
‫D para sair dela.
‫Mas agora, quando
‫temos um programa Note rodando assim, precisamos
‫usar o controle C para basicamente interromper esse programa.
‫É por isso que aqui usei o controle C e,
‫ao longo do
‫resto do curso, quando quiser terminar um programa, sempre
‫estarei usando o controle C.
‫Então, isso é controle e não comando C, novamente.
‫Mesmo em um Mac, você precisa usar o controle C.
‫Agora vamos fazer isso de novo, obtemos a mesma resposta,
‫mas agora devemos ter algo no console.
‫Portanto, este é o objeto de solicitação e, como mencionei,
‫há uma tonelada de coisas aqui.
‫Você vê?
‫Tudo isso, nem cabe no console.
‫Acho que
‫não posso nem mostrar todos os dados legais que estão lá.
‫Na verdade, aqui temos alguns cabeçalhos, então temos o
‫host e aqui temos alguns ...
‫Novamente, temos alguns cabeçalhos
‫http, que é algo sobre o qual falaremos,
‫acho que no próximo vídeo.
‫De qualquer forma, o que importa aqui é
‫que realmente temos acesso a todos
‫os tipos de coisas quando lidamos com a solicitação e enviamos a resposta.
‫Não importa aqui, vamos realmente nos livrar
‫disso, salvá-lo e, em seguida, encerrar e iniciar novamente.
‫E agora, para terminar este
‫vídeo, quero mostrar o que realmente iremos construir
‫nas próximas aulas
‫até o final desta seção.
‫Portanto, é um pequeno aplicativo divertido chamado de farm de nós.
‫Temos alguns produtos aqui, e
‫construímos tudo isso aqui usando um modelo html muito simples,
‫e você pode clicar no link e basicamente
‫o levará
‫para a página de detalhes deste
‫produto, neste caso os abacates.
‫Tem um monte de dados aqui, um
‫botão que não faz nada, e então podemos
‫voltar para a página.
‫Então, abacate, aí a gente tem o
‫queijo por exemplo, e aí
‫tem, claro, dados diferentes para cada um desses produtos.
‫Então ele tem um design
‫novo e bem louco para torná-lo pop um
‫pouco, e sim, eu acho que este é um pequeno projeto divertido.
‫E vamos começar a construir na
‫verdade, bem no próximo vídeo.