Maison >interface Web >js tutoriel >Application Web NodeJS écoutant le fichier sock example_node.js

Application Web NodeJS écoutant le fichier sock example_node.js

WBOY
WBOYoriginal
2016-05-16 16:13:411665parcourir

Les services TCP écrits en NodeJS peuvent écouter sur un fichier sock (Domain Socket), et son service HTTP peut également faire de même. Bien que cela n'ait pas beaucoup de sens de se connecter à un fichier sock en tant que service HTTP, il ne s'agit donc que d'une pure tentative.

Le service TCP s'écrit ainsi

Copier le code Le code est le suivant :

var net = require('net');
net.createServer(fonction (socket) {
socket.on('données', fonction (données) {
​ socket.write('received: ' data);
});
}).listen('/tmp/node_tcp.sock');

Connectez-vous à celui ci-dessus '/tmp/node_tcp.sock'
Copier le code Le code est le suivant :

telnet /tmp/node_tcp.sock
Essayer /tmp/node_tcp.sock...
Connecté à (null).
Le caractère d'échappement est '^]'.
Bonjour tout le monde !
reçu : Bonjour tout le monde !

Pour être précis, cet article devrait concerner les fichiers Domain Socket de surveillance TCP et HTTP de NodeJS.

Il est encore très courant de surveiller TCP Domain Socket. Par exemple, cela se fait parfois lors de l'accès à la base de données ou au cache local, par exemple en utilisant '/tmp/mysql.sock' pour accéder au service MySQL local, il y a donc pas besoin de le démarrer. Le port TCP est exposé, la sécurité est améliorée et les performances sont également améliorées.

Jetons maintenant un coup d'œil à la surveillance HTTP de NodeJS sur Domain Socket, modifiée à partir d'un exemple classique

Copier le code Le code est le suivant :

var http = require('http');
http.createServer(fonction (req, res) {
res.writeHead(200, {'Content-Type' : 'text/plain'});
res.end('Bonjour tout le monde');
}).listen('/tmp/node_http.sock');
console.log('Serveur exécuté sur /tmp/node_http.sock');

Je ne sais pas encore comment accéder au service HTTP ci-dessus dans le navigateur, alors utilisez telnet pour tester

Copier le code Le code est le suivant :

telnet /tmp/node_http.sock
Essayer /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/plain
Date : lundi 26 janvier 2015 04:21:09 GMT
Connexion : keep-alive
Transfert-Encodage : fragmenté

c
Bonjour tout le monde

0


Peut gérer correctement les requêtes HTTP sur '/tmp/node_http.sock'.

Utilisez le client HTTP NodeJS pour accéder

Copier le code Le code est le suivant :

var http = require('http');

optionsvar = {
socketPath : '/tmp/node_http.sock',
Méthode : 'GET',
chemin : '/'
};

var req = http.request(options, function(res){
console.log('STATUS : ' res.statusCode);
console.log('HEADERS: ' JSON.stringify(res.headers));

res.on('data', fonction (morceau){
console.log(chunk.toString());
});
});

req.end();


Exécutez le code ci-dessus, si le nom du fichier est http_client.js,
Copier le code Le code est le suivant :

nœud http_client.js
STATUT : 200
HEADERS : {"content-type": "text/plain", "date": "Lun. 26 janvier 2015 04:25:49 GMT", "connection": "close", "transfer-encoding": "chunked" >
Bonjour tout le monde

Cet article est juste pour mémoire. Je ne parviens pas à comprendre le but réel de laisser le service HTTP écouter sur le Domain Socket, et le navigateur ne peut pas y accéder.
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn