Escreva um servidor HTTP que entregue o mesmo arquivo de texto para cada solicitação recebida.
O servidor deve escutar na porta fornecida pelo primeiro argumento do seu programa.
Será fornecida a localização do arquivo para servir como segundo argumento da linha de comando. Você deve usar o método fs.createReadStream()
para a stream do conteúdo do arquivo para resposta.
Porque nós precisamos criar um servidor HTTP para este exercício em vez de criar um servidor TCP genérico, nós devemos usar o modulo http
do núcleo do Node. Como o módulo net
, http
possui um método chamado http.createServer()
mas este cria um servidor que pode transmitir HTTP.
http.createServer()
retorna um callback que é chamado uma vez para cada conexão recebida pelo servidor. A função callback é escrita:
function callback (request, response) { /* ... */ }
Onde os dois argumentos são objetos que representam a requisição HTTP e a resposta correspondente para esta requisição. request
é utilizado para buscar propriedades, tais como o cabeçalho e a consulta do pedido, enquanto response
é utilizado para enviar dados para o cliente bem como o cabeçalho e o corpo.
Ambos request
and response
são também Node streams!O que significa que podemos usar as abstrações de streaming para enviar e receber dados que se adéquam ao seu caso de uso.
http.createServer()
também retorna uma instância para seu server
. Você deve chamar server.listen(portNumber)
para iniciar uma escuta na porta específica.
Um típico Servidor HTTP Node parece com isto:
var http = require('http')
var server = http.createServer(function (req, res) {
// request handling logic...
})
server.listen(8000)
A documentação do modulo http
pode ser encontrada redirecionando seu navegador para:
/node_apidoc/http.html
O núcleo do módulo fs
também possui algumas APIs streaming para arquivos.Você precisa usar o método fs.createReadStream()
para criar uma stream que representa o arquivo que você passa como argumento. O método retorna um objeto de stream que você pode usar src.pipe(dst)
para fornecer os dados de src
stream para o dst
stream. Desta maneira, você pode conectar um filesystem stream com uma resposta HTTP stream.