O nó fornece módulos de programação de rede ricos
| Módulo do nó | protocolo |
| líquido | TCP |
| Dgram | UDP |
| http | Http |
| https | Https |
Os eventos de serviço TCP são divididos nas duas categorias a seguir
(1) Evento do servidor
Para servidores criados através do net.createServer (), é uma instância do EventEmitter e existem vários eventos personalizados:
Ouvindo: acionado após ligar para ouvir () para vincular a porta ou soquete de domínio, abreviado como server.listen (porta, ouvinte), passou pelo segundo parâmetro.
Conexão: acionada quando cada soquete do cliente está conectado ao servidor. A maneira simples é passar o último parâmetro através da net.createServer ().
Fechar: acionado quando o servidor estiver fechado. Depois de ligar para o Server.Close (), o servidor parará de aceitar novas conexões de soquete, mas mantenha as conexões atualmente existentes e aguardará que todas as conexões sejam desconectadas, este evento será acionado.
Erro: este evento será acionado quando ocorrer uma exceção no servidor.
(2) Evento de conexão
O servidor pode manter conexões com vários clientes ao mesmo tempo, um objeto de fluxo gravável e típico para cada conexão. Objetos de fluxo podem ser usados para comunicação entre o servidor e o cliente. Eles podem ler os dados enviados de uma extremidade de uma extremidade através de eventos de dados ou enviar dados de uma extremidade para a outra extremidade através do método Write ().
Dados: Quando um lado chama Write () para enviar dados, o outro lado aciona o evento de dados. Os dados aprovados pelo evento são os dados enviados por write ().
FIM: Este evento será acionado quando uma das extremidades da conexão enviar dados da FIN.
Connect: Este evento é usado para o cliente e será disparado quando o soquete se conectar com sucesso ao servidor.
Dreno: quando as chamadas de extremidade Write () para enviar dados, o final atual aciona o evento.
Erro: quando a exceção é enviada
Fechar: disparado quando o soquete está completamente fechado
Tempo limite: quando a conexão não estiver mais ativa após um certo período de tempo, acionando o evento para notificar o usuário de que a conexão está ociosa.
O TCP possui certas estratégias de otimização para pequenos pacotes de dados na rede: o algoritmo Nagle, que é acionado apenas quando os dados atingem uma certa quantidade.
Serviços UDP
O UDP é chamado de protocolo de pacote de usuário e não é um serviço orientado a conexão. O UDP no nó é apenas uma instância do EventEmitter, não uma instância de fluxo, com os seguintes eventos personalizados:
(1) Mensagem: Quando o soquete UDP monitora a porta da placa de rede e recebe a mensagem, os dados transportados pelo gatilho são o objeto Buffer de mensagem e uma informação de endereço remoto.
(2) Ouvindo: Este evento é acionado quando o soquete UDP começa a ouvir.
(3) Fechar: Este evento é acionado quando o método Close () é chamado e o evento de mensagem não é mais acionado. Se o evento de mensagem precisar ser acionado novamente, ele precisará ser rebocado.
(4) Erro: acionado quando ocorre uma exceção. Se não for ouvido, será jogado diretamente, fazendo com que o processo saia.
Serviço HTTP
O módulo HTTP no nó herda do servidor TCP (módulo Net), que pode manter a conexão com vários clientes. Como não cria threads para cada conexão e mantém uma pegada de memória muito baixa, ele pode obter alta simultaneidade. A diferença entre o serviço HTTP e o serviço TCP é que, após o Keepalive ser ativado, uma sessão TCP pode ser usada para várias solicitações e respostas. O serviço TCP é usado como unidade para conexão e o serviço HTTP é usado como uma unidade para solicitação. O módulo HTTP é encapsular o processo de conexão à solicitação.
O módulo HTTP abstrai a leitura e a gravação do soquete usado para se conectar aos objetos ServerRequest e ServerResponse, correspondendo às operações de solicitação e resposta, respectivamente.
(1) solicitação HTTP
Para a operação de leitura da conexão TCP, o módulo HTTP a encapsula como um objeto ServerRequest. Por exemplo, a parte do cabeçalho req.method, req.url, req.headers, a parte dos dados do sistema de mensagens é abstraída em um objeto de fluxo somente leitura. Se a lógica de negócios precisar ler os dados no sistema de mensagens, o fluxo de dados precisará ser concluído antes que a operação possa ser executada.
(2) Resposta HTTP
A resposta HTTP encapsula a operação de gravação da conexão subjacente, que pode ser considerada como um objeto de fluxo gravável.
Os métodos de informação do cabeçalho do pacote de resposta: Métodos Res.setheader () e Res.WriteHeader (). Você pode senizar várias vezes para a configuração, mas deve chamar o WriteHeader para gravar na conexão antes que ela entre em vigor.
Métodos parciais da mensagem: Res.Write () e Res.End () Métodos
(3) Evento do servidor HTTP
Conexão: Quando o cliente estabelece uma conexão TCP com o servidor, um evento de conexão é acionado
Solicitação: Após estabelecer uma conexão TCP, o módulo HTTP abstrava a solicitação HTTP e a resposta HTTP do fluxo de dados. Quando os dados da solicitação são enviados para o servidor, o evento é acionado após a conclusão do cabeçalho da solicitação HTTP; Após o res.END (), a conexão TCP pode ser usada para a próxima solicitação.
Fechar: chamando o método Server.close para parar de receber novas conexões, acionando este evento quando todas as conexões existentes estiverem desconectadas.
CheckContinue: Quando alguns clientes enviam dados maiores, eles enviam uma solicitação com espera: 100-Continue no cabeçalho para o servidor, e o serviço desencadeia o evento;
Connect: acionado quando o cliente inicia uma solicitação de conexão
Atualização: quando o cliente exige uma atualização do protocolo de conexão, ele precisa negociar com o servidor. O cliente trará o campo de atualização no cabeçalho da solicitação.
ClientError: o cliente conectado envia um erro e o erro é transmitido ao servidor e o evento é acionado.
(4) Cliente HTTP
O módulo HTTP fornece http.request (Opções, Connect) para a construção de clientes HTTP.
O cliente HTTP é semelhante ao servidor. No objeto ClientRequest, seu evento é chamado de resposta. Quando o ClientRequest analisar a mensagem de resposta, o evento de resposta será acionado assim que o cabeçalho da resposta for analisado. Ao mesmo tempo, um objeto de resposta que o cliente de resposta é passado para operação. A mensagem de resposta subsequente é fornecida em um fluxo somente leitura.
(5) eventos do cliente HTTP
Resposta: o cliente correspondente ao evento de solicitação no servidor aciona o evento quando a solicitação é respondida após a emissão da solicitação.
Socket: disparado quando a conexão estabelecida no pool de conexões subjacente é atribuída ao objeto de solicitação atual;
Connect: Quando o cliente enviar uma solicitação de conexão ao servidor, se o servidor responder ao código de status de 200, o cliente acionará o evento.
Upgrade: quando o cliente desfruta da solicitação de atualização quando o cliente gosta do servidor, envia uma solicitação de atualização, se o servidor responder ao status dos protocolos de comutação 101, o cliente acionará o evento.
Continue: Depois que o cliente inicia a espera: 100 continue as informações do cabeçalho para o servidor, ele tenta enviar dados maiores. Se o servidor responder ao estado dos 100, o servidor acionará o evento
WebSocket Services
A WebSocket apareceu pela primeira vez como um recurso importante do HTML5 e tem as seguintes vantagens sobre o HTTP:
(1) O cliente e o servidor estabelecem apenas a conexão TCP uma vez, e menos conexões podem ser usadas
(2) O WebSocket Server pode empurrar dados para o cliente, o que é muito mais flexível e eficiente do que o modo de resposta de solicitação HTTP
(3) Cabeçalho de protocolo mais leve para reduzir a transmissão de dados
Não há biblioteca WebSocket embutida na biblioteca no nó, mas o módulo WS da comunidade encapsula a implementação subjacente de websocket como o famoso soquete.io