Un service TCP écrit par NodeJS peut écouter sur un fichier de chaussettes (socket de domaine), et son service HTTP peut faire de même. Bien qu'il n'ait pas beaucoup de sens de se connecter à un fichier de chaussettes en tant que service HTTP, c'est juste une pure tentative ici.
C'est ainsi que le service TCP est écrit
La copie de code est la suivante:
var net = require ('net');
net.CreateServer (fonction (socket) {
socket.on ('data', fonction (data) {
socket.write ('reçu:' + data);
});
}). écouter ('/ tmp / node_tcp.sock');
Connectez le '/tmp/node_tcp.sock ci-dessus
La copie de code est la suivante:
telnet /tmp/node_tcp.sock
Essayant /tmp/node_tcp.sock ...
Connecté à (null).
Le caractère d'échappement est '^]'.
Bonjour le monde!
Reçu: Hello World!
Pour être précis, cet article devrait être TCP et HTTP à écouter les fichiers de socket de domaine de NodeJS.
Il est toujours très courant pour TCP à écouter les prises de domaine. Par exemple, l'accès à la base de données ou au cache natif sera parfois effectué, comme l'utilisation de '/tmp/mysql.sock' pour accéder au service MySQL natif, afin qu'il n'y ait pas besoin de démarrer le port TCP à exposer, et la sécurité est améliorée et les performances sont également améliorées.
Jetons maintenant un coup d'œil à l'écoute HTTP de Nodejs sur la prise de domaine et transformons-la à partir d'exemples classiques.
La copie de code est la suivante:
var http = require ('http');
http.createServer (fonction (req, res) {
res.writeHead (200, {'Content-Type': 'Text / PLAIN'});
res.end ('Hello World / N');
}). écouter ('/ tmp / node_http.sock');
console.log ('Server en cours d'exécution sur /tmp/node_http.sock');
Je ne sais pas comment accéder au service HTTP ci-dessus dans le navigateur, donc j'utilise Telnet pour le tester
La copie de code est la suivante:
telnet /tmp/node_http.sock
Essayant /tmp/node_http.sock ...
Connecté à (null).
Le caractère d'échappement est '^]'.
Get / http / 1.1
Http / 1.1 200 ok
Type de contenu: texte / simple
Date: lun, 26 janvier 2015 04:21:09 GMT
Connexion: Keep-Alive
Codage de transfert:
c
Bonjour le monde
0
Peut gérer correctement les demandes HTTP sur '/tmp/node_http.sock'.
Utilisez le client NodeJS HTTP pour accéder
La copie de code est la suivante:
var http = require ('http');
Var Options = {
socketpath: '/tmp/node_http.sock',
Méthode: «Get»,
chemin: '/'
};
var req = http.request (options, fonction (res) {
Console.log ('Status:' + Res.Statuscode);
console.log ('en-têtes:' + json.stringify (res.headers));
res.on ('data', fonction (chunk) {
console.log (chunk.toString ());
});
});
req.end ();
Exécutez le code ci-dessus, si le nom de fichier est http_client.js,
La copie de code est la suivante:
nœud http_client.js
Statut: 200
En-têtes: {"Content-Type": "Text / Plain", "Date": "Mon, 26 janvier 2015 04:25:49 GMT", "Connexion": "Close", "Transfer-Encoding": "Chunked"}
Bonjour le monde
Cet article est uniquement pour enregistrer, et je ne peux pas imaginer le but réel de laisser le service HTTP écouter sur la prise de domaine, et le navigateur ne peut pas y accéder.