Heim >Web-Frontend >js-Tutorial >NodeJS-Webanwendung, die die Sock-Datei example_node.js überwacht

NodeJS-Webanwendung, die die Sock-Datei example_node.js überwacht

WBOY
WBOYOriginal
2016-05-16 16:13:411669Durchsuche

In NodeJS geschriebene TCP-Dienste können eine Sock-Datei (Domain Socket) abhören, und der HTTP-Dienst kann das Gleiche tun. Obwohl es wenig Sinn macht, als HTTP-Dienst eine Verbindung zu einer Sock-Datei herzustellen, ist dies nur ein reiner Versuch.

Der TCP-Dienst ist so geschrieben

Code kopieren Der Code lautet wie folgt:

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

Verbinden Sie sich mit dem oben genannten „/tmp/node_tcp.sock“
Code kopieren Der Code lautet wie folgt:

telnet /tmp/node_tcp.sock
Versuche /tmp/node_tcp.sock...
Verbunden mit (null).
Das Escape-Zeichen ist „^]“.
Hallo Welt!
erhalten: Hallo Welt!

Um genau zu sein, sollte es sich bei diesem Artikel um die TCP- und HTTP-Überwachungs-Domain-Socket-Dateien von NodeJS handeln.

Dies ist bei der TCP-Überwachung von Domain-Sockets immer noch sehr verbreitet. Manchmal geschieht dies beispielsweise beim Zugriff auf die lokale Datenbank oder den Cache, z. B. bei der Verwendung von „/tmp/mysql.sock“, um auf den lokalen MySQL-Dienst zuzugreifen Es ist nicht erforderlich, es zu starten. Der TCP-Port wird verfügbar gemacht, die Sicherheit wird verbessert und auch die Leistung wird verbessert.

Jetzt werfen wir einen Blick auf die HTTP-Überwachung von NodeJS auf Domain Socket, modifiziert von einem klassischen Beispiel

Code kopieren Der Code lautet wie folgt:

var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Worldn');
}).listen('/tmp/node_http.sock');
console.log('Server läuft unter /tmp/node_http.sock');

Ich weiß noch nicht, wie ich im Browser auf den oben genannten HTTP-Dienst zugreifen kann, also verwenden Sie Telnet zum Testen

Code kopieren Der Code lautet wie folgt:

telnet /tmp/node_http.sock
Versuche /tmp/node_http.sock...
Verbunden mit (null).
Das Escape-Zeichen ist „^]“.
GET/HTTP/1.1
HTTP/1.1 200 OK
Inhaltstyp: Text/einfach
Datum: Mo, 26. Januar 2015 04:21:09 GMT
Verbindung: Keep-Alive
Übertragungskodierung: chunked

c
Hallo Welt

0


Kann HTTP-Anfragen auf „/tmp/node_http.sock“ korrekt verarbeiten.

Verwenden Sie den NodeJS-HTTP-Client für den Zugriff

Code kopieren Der Code lautet wie folgt:

var http = require('http');

Var-Optionen = {
socketPath: '/tmp/node_http.sock',
Methode: 'GET',
Pfad: '/'
};

var req = http.request(options, 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();


Führen Sie den obigen Code aus, wenn der Dateiname http_client.js lautet,
Code kopieren Der Code lautet wie folgt:

Knoten http_client.js
STATUS: 200
HEADERS: {"content-type": "text/plain", "date": Mo, 26. Januar 2015, 04:25:49 GMT, "connection": "close", "transfer-encoding": "chunked" }
Hallo Welt

Dieser Artikel dient nur zur Veranschaulichung. Mir fällt nicht ein, warum der HTTP-Dienst den Domain-Socket abhören soll, und der Browser kann nicht darauf zugreifen.
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn