Node.js HTTP Server
O Node.js nos permite criar servidores e clientes usando a API de baixo nível do módulo HTTP. Quando começamos a aprender o nó, todos encontramos o seguinte código:
A cópia do código é a seguinte:
var http = requer ('http');
http.createServer (function (req, res) {
Res.End ('Hello World/N');
}). Ouça (3000, "127.0.0.1");
console.log ("Danário do servidor em http://127.0.0.1:3000");
Este código inclui informações sobre o módulo HTTP, significando:
1. Solicite o módulo HTTP no núcleo de `node.js` e atribua uma variável a ser usada em scripts futuros.
O script pode acessar alguns métodos para usar o HTTP através do `node.js`.
2. Crie um novo objeto de servidor web usando `CreateServer`
3. O script passa uma função anônima para o servidor, dizendo ao objeto do servidor da web o que acontece sempre que recebe uma solicitação
4. A linha de script 4 define a porta e o host do servidor da web, o que significa que `http: //127.0.0.1: 3000` pode ser usado
Visite o servidor
Cabeçalho HTTP
Para cada solicitação e resposta HTTP, um cabeçalho HTTP é enviado. O cabeçalho HTTP envia informações adicionais, incluindo o tipo de conteúdo, a data em que o servidor enviou a resposta e o código de status HTTP
O cabeçalho HTTP contém muitas informações. A seguir, são apresentadas as informações sobre o cabeçalho HTTP incluído na minha página inicial do Baidu:
Como adicionei mais sites à minha página inicial do Baidu, os dados aqui podem ser diferentes dos leitores. A partir disso, podemos ver que o Baidu é um servidor da Web e BWS/1.1
Abaixo está as informações do cabeçalho HTTP do código acima agora:
Redirecionamento em Node.js
No nó, podemos criar facilmente um servidor simples para redirecionar os visitantes para outra página da web, com as seguintes diretrizes:
1. Envie um código de resposta 301 ao cliente, dizendo ao cliente que o recurso foi movido para outro local;
2. Envie um cabeçalho de localização para informar ao cliente para redirecionar.
Os códigos relevantes são os seguintes:
A cópia do código é a seguinte:
var http = requer ('http');
http.createServer (function (req, res) {
Res.Writehead (301, {
'Localização': 'http: //example-2.com/web'
});
res.nd ();
}). Ouça (3000, '127.0.0.1');
console.log ("Danário do servidor em http://127.0.0.1:3000");
Abra o navegador e visite a página http://127.0.0.1:3000 será redirecionada.
Responda a diferentes solicitações
O Node.js pode não apenas criar uma única resposta, mas para vários tipos de solicitações, precisamos adicionar algumas rotas ao aplicativo. O nó torna isso direto usando módulos de URL. O módulo URL nos permite ler o URL, analisá -lo e depois fazer algo com a saída.
A cópia do código é a seguinte:
var url = requer ('url');
var requesturl = "http://example.com:1234/path?query=string#hash"
Agora podemos analisar o URL solicitado e cortar o conteúdo dele, por exemplo, para obter o nome do host, podemos entrar:
A cópia do código é a seguinte:
url.parse (requesturl) .hostname
Neste momento, ele voltará a "exemplo.com"
Para obter o número da porta, você pode entrar:
A cópia do código é a seguinte:
url.parse (requesturl) .port
Ele voltará para "1234"
Módulo de evento
O Node.js é considerado a melhor maneira de alcançar a simultaneidade. O módulo de eventos é o núcleo do Node.js, e muitos outros módulos o usam para envolver a funcionalidade da arquitetura de eventos. Como o Node.js é executado em um único thread, qualquer código síncrono é bloqueado. Portanto, ao escrever o código Node.js, precisamos considerar algumas regras simples:
1. Não bloqueie - `node.js` é um único rosqueado e, se o código bloquear, tudo o mais parar
2. Retorno rápido - a operação deve retornar rapidamente. Se você não puder retornar rapidamente, deve migrá -lo para outro processo
O módulo de eventos permite que os desenvolvedores criem ouvintes e processadores para eventos. No cliente JS, podemos definir um ouvinte para o evento de clique e depois fazer algo quando o evento ocorrer:
A cópia do código é a seguinte:
var tar = document.getElementById ("Target");
Tar.AddeventListener ("Click", function () {
Alert ("Clique em Evento Encaminhado, Target foi clicado");
},falso);
Obviamente, este é um exemplo sem considerar a compatibilidade do IE, e os eventos de foco do Node.js são mais comuns a eventos de rede, incluindo:
1. Resposta do servidor da web
2. Leia os dados do arquivo
3. Retorne dados do banco de dados
Usando o módulo de eventos, primeiro precisamos criar uma nova instância do EventEmitter:
A cópia do código é a seguinte:
var eventEMitter = requer ('eventos'). EventEmitter;
var teste = new EventEmitter ();
Depois que o conteúdo acima for adicionado ao código, você pode adicionar eventos e ouvintes. Podemos enviar eventos da seguinte maneira, como:
A cópia do código é a seguinte:
test.emit ('msg', 'a mensagem enviada por nó');
O primeiro parâmetro é uma string que descreve o evento para que possa ser usada para a correspondência do ouvinte
Para receber uma mensagem, um ouvinte deve ser adicionado, que a lida quando o evento é acionado, por exemplo:
A cópia do código é a seguinte:
test.on ('mensagem', função (dados) {
console.log (dados);
});
A implementação do modo de escuta de eventos básicos do módulo de eventos AddListener/ON, uma vez, removelistener, removealllisterners, emiti e outros modos de escuta de eventos básicos. Não é o mesmo que os eventos na árvore Dom Front-End, porque não possui comportamentos de evento que pertencem ao DOM, como bolhas, camadas por captura de camadas, e não há como lidar com a entrega de eventos como prevenvDefault (), StopPropagation (), StopImedIatePropagation (), etc.
1.Class: Events.EventEmitter: Obtenha a classe EventEmitter através do requisito ('Eventos'). EventEmitter.
2.Emitter.On (Evento, ouvinte): Adicione um ouvinte à cauda da matriz do ouvinte de um evento específico. Volte ao emissor, facilite a chamada em cadeia, a mesma abaixo.
3.Emitter.Removelistener (evento, ouvinte) exclui um ouvinte da matriz do ouvinte de um evento
4.Emitter.Listeners (Evento) Retorna a matriz do ouvinte do evento especificado
Veja a documentação da API Node.js para obter mais detalhes
O código a seguir mostra uma mensagem confidencial que pode se autodestruir dentro de 5 segundos:
A cópia do código é a seguinte:
var eventEMitter = requer ('eventos'). EventEmitter;
var secretMessage = new EventEmitter ();
secretMessage.on ('mensagem', função (dados) {
console.log (dados);
});
secretMessage.on ('autodestruct', function () {
console.log ('o msg é destruído!');
});
secretMessage.Emit ('Mensagem', 'Esta é uma mensagem secreta. Deatizará em 5s');
setTimeout (function () {
secretMessage.emit ('Auto -destruição');
}, 5000);
Neste script, dois eventos são enviados, com dois ouvintes. Quando o script está em execução, o evento de mensagem ocorre e é processado pelo processador "mensagem"
O EventEmitter é usado em todos os lugares do Node.js, por isso é importante dominá -lo. O Node.js obtém dados através de operações de E/S e usa amplamente o módulo de eventos para suportar programação assíncrona
PERGUNTAS FREQUENTES:
P: Existe um limite no número máximo de ouvintes para um evento?
R: Por padrão, se o evento tiver 10 ouvintes em operação, ele emitirá um aviso. No entanto, você pode usar emissor.setMaxListener (n) para alterar essa quantidade
P: Posso ouvir todos os eventos enviados?
Resposta: Não. Precisamos criar um ouvinte para cada evento que queremos responder