Um serviço TCP escrito pelo NodeJS pode ouvir em um arquivo de meia (soquete de domínio) e seu serviço HTTP pode fazer o mesmo. Embora não faça muito sentido se conectar a um arquivo de meia como um serviço HTTP, é apenas uma tentativa pura aqui.
É assim que o serviço TCP é escrito
A cópia do código é a seguinte:
var net = requer ('net');
net.createServer (função (soquete) {
Socket.on ('dados', função (dados) {
soket.write ('recebido:' + dados);
});
}). Ouça ('/tmp/node_tcp.sock');
Conecte o acima '/tmp/node_tcp.sock'
A cópia do código é a seguinte:
telnet /tmp/node_tcp.sock
Trying /tmp/node_tcp.sock ...
Conectado a (nulo).
O personagem de escape é '^]'.
Olá mundo!
Recebido: Hello World!
Para ser preciso, este artigo deve ser o TCP e o HTTP do NodeJS, ouvindo arquivos de soquete de domínio.
Ainda é muito comum para o TCP ouvir soquetes de domínio. Por exemplo, às vezes o acesso ao banco de dados ou cache nativo será feito, como o uso de '/tmp/mysql.sock' para acessar o serviço nativo do MySQL, para que não haja necessidade de iniciar a porta TCP a ser exposta e a segurança é melhorada e o desempenho também é melhorado.
Agora, vamos dar uma olhada no HTTP da Nodejs, ouvindo no soquete de domínio e transformá -lo em exemplos clássicos.
A cópia do código é a seguinte:
var http = requer ('http');
http.createServer (function (req, res) {
res.writehead (200, {'content-type': 'text/plana'});
Res.End ('Hello World/N');
}). Ouça ('/tmp/node_http.sock');
console.log ('servidor em execução em /tmp/node_http.sock');
Não sei como acessar o serviço HTTP acima no navegador, então eu uso o Telnet para testá -lo
A cópia do código é a seguinte:
telnet /tmp/node_http.sock
Trying /tmp/node_http.sock ...
Conectado a (nulo).
O personagem de escape é '^]'.
Get / HTTP / 1.1
Http/1.1 200 ok
Tipo de conteúdo: texto/simples
Data: Seg, 26 de janeiro de 2015 04:21:09 GMT
Conexão: Keep-alive
Codificação de transferência: rolada
c
Olá mundo
0
Pode lidar corretamente a solicitações HTTP em '/tmp/node_http.sock'.
Use o cliente NodeJS HTTP para acessar
A cópia do código é a seguinte:
var http = requer ('http');
var options = {
SocketPath: '/tmp/node_http.sock',
Método: 'Get',
caminho: '/'
};
var req = http.request (opções, função (res) {
console.log ('status:' + res.statuscode);
console.log ('cabeçalhos:' + json.stringify (res.headers));
res.on ('dados', função (chunk) {
console.log (chunk.toString ());
});
});
req.end ();
Execute o código acima, se o nome do arquivo for http_client.js,
A cópia do código é a seguinte:
nó http_client.js
Status: 200
Cabeçalhos: {"Content-Type": "Text/Plain", "Date": "Seg, 26 de janeiro de 2015 04:25:49 GMT", "Connection": "Close", "Transfer-coding": "Chunked"}
Olá mundo
Este artigo é apenas para registro, e não consigo imaginar o objetivo real de permitir que o serviço HTTP ouça no soquete do domínio, e o navegador não pode acessá -lo.