Un servicio TCP escrito por NodeJS puede escuchar en un archivo de calcetín (socket de dominio), y su servicio HTTP puede hacer lo mismo. Aunque no tiene mucho sentido conectarse a un archivo de calcetín como un servicio HTTP, es solo un intento puro aquí.
Así es como se escribe el servicio TCP
La copia del código es la siguiente:
var net = require ('net');
net.createServer (function (socket) {
Socket.on ('data', function (data) {
socket.write ('recibido:' + datos);
});
}). Listen ('/tmp/node_tcp.sock');
Conecte el anterior '/tmp/node_tcp.sock'
La copia del código es la siguiente:
telnet /tmp/node_tcp.sock
Intentando /tmp/node_tcp.sock ...
Conectado a (nulo).
El personaje de escape es '^]'.
¡Hola Mundo!
Recibido: ¡Hola mundo!
Para ser precisos, este artículo debe ser TCP y HTTP de NodeJS escuchando los archivos de Socket de dominio.
Todavía es muy común que TCP escuche los enchufes de dominio. Por ejemplo, a veces se realizará el acceso a la base de datos o el caché nativo, como usar '/tmp/mysql.sock' para acceder al servicio nativo MySQL, de modo que no hay necesidad de iniciar el puerto TCP para expuesto, y la seguridad mejore y el rendimiento también mejore.
Ahora echemos un vistazo a la escucha HTTP de NodeJs en el socket de dominio y lo transforme de ejemplos clásicos.
La copia del código es la siguiente:
var http = require ('http');
http.createServer (function (req, res) {
res.Writehead (200, {'Content-type': 'Text/Plain'});
res.end ('Hello World/n');
}). Listen ('/tmp/node_http.sock');
console.log ('servidor ejecutando AT /tmp/node_http.sock');
No sé cómo acceder al servicio HTTP anterior en el navegador, así que uso Telnet para probarlo
La copia del código es la siguiente:
telnet /tmp/node_http.sock
Intentando /tmp/node_http.sock ...
Conectado a (nulo).
El personaje de escape es '^]'.
Get / http / 1.1
Http/1.1 200 OK
Tipo de contenido: texto/simple
Fecha: lunes 26 de enero de 2015 04:21:09 GMT
Conexión: mantener alive
Ecodificación de transferencia: fortado
do
Hola Mundo
0
Puede manejar correctamente las solicitudes HTTP en '/tmp/node_http.sock'.
Use el cliente NodeJS HTTP para acceder
La copia del código es la siguiente:
var http = require ('http');
opciones var = {
SocketPath: '/tmp/node_http.sock',
Método: 'Get',
camino: '/'
};
var req = http.request (opciones, function (res) {
console.log ('status:' + res.statuscode);
console.log ('Headers:' + json.stringify (res.headers));
res.on ('Data', Function (Chunk) {
console.log (chunk.toString ());
});
});
req.end ();
Ejecute el código anterior, si el nombre del archivo es http_client.js,
La copia del código es la siguiente:
nodo http_client.js
Estado: 200
Encabezados: {"Content-type": "Text/Plain", "Date": "Mon, 26 de enero de 2015 04:25:49 GMT", "Conexión": "Cerrar", "Econado de transferencia": "Dijo"}
Hola Mundo
Este artículo es solo para registro, y no puedo imaginar el propósito real de dejar que el servicio HTTP escuche en el enchufe del dominio, y el navegador no puede acceder a él.