Rumah >hujung hadapan web >tutorial js >Fail sock mendengar aplikasi web NodeJS example_node.js

Fail sock mendengar aplikasi web NodeJS example_node.js

WBOY
WBOYasal
2016-05-16 16:13:411663semak imbas

Perkhidmatan TCP yang ditulis dalam NodeJS boleh mendengar pada fail stokin (Domain Socket), dan perkhidmatan HTTPnya juga boleh melakukan perkara yang sama. Walaupun tidak masuk akal untuk menyambung ke fail stokin sebagai perkhidmatan HTTP, jadi ini hanyalah percubaan murni.

Perkhidmatan TCP ditulis seperti ini

Salin kod Kod adalah seperti berikut:

var net = memerlukan('net');
net.createServer(fungsi (soket) {
socket.on('data', fungsi (data) {
​ socket.write('diterima: ' data);
});
}).dengar('/tmp/node_tcp.sock');

Sambungkan ke '/tmp/node_tcp.sock' di atas
Salin kod Kod adalah seperti berikut:

telnet /tmp/node_tcp.sock
Mencuba /tmp/node_tcp.sock...
Disambungkan ke (null).
Watak melarikan diri ialah '^]'.
Hello Dunia!
diterima: Hello World!

Setepatnya, artikel ini mestilah fail Soket Domain pemantauan TCP dan HTTP NodeJS.

Ia masih sangat biasa untuk Soket Domain pemantauan TCP Sebagai contoh, kadang-kadang ini dilakukan apabila mengakses pangkalan data atau cache tempatan, seperti menggunakan '/tmp/mysql.sock' untuk mengakses perkhidmatan MySQL tempatan, jadi terdapat. tidak perlu memulakannya Port TCP terdedah, keselamatan dipertingkatkan, dan prestasi juga dipertingkatkan.

Sekarang mari kita lihat pemantauan HTTP NodeJS pada Domain Socket, diubah suai daripada contoh klasik

Salin kod Kod adalah seperti berikut:

var http = memerlukan('http');
http.createServer(fungsi (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Worldn');
}).dengar('/tmp/node_http.sock');
console.log('Pelayan berjalan di /tmp/node_http.sock');

Saya belum tahu lagi cara untuk mengakses perkhidmatan HTTP di atas dalam penyemak imbas, jadi gunakan telnet untuk menguji

Salin kod Kod adalah seperti berikut:

telnet /tmp/node_http.sock
Mencuba /tmp/node_http.sock...
Disambungkan ke (null).
Watak melarikan diri ialah '^]'.
GET/HTTP/1.1
HTTP/1.1 200 OK
Jenis Kandungan: teks/biasa
Tarikh: Isn, 26 Jan 2015 04:21:09 GMT
Sambungan: kekalkan hidup
Pemindahan-Pengekodan: terpotong

c
Hello Dunia

0


Boleh mengendalikan permintaan HTTP dengan betul pada '/tmp/node_http.sock'.

Gunakan Pelanggan HTTP NodeJS untuk mengakses

Salin kod Kod adalah seperti berikut:

var http = memerlukan('http');

pilihan var = {
socketPath: '/tmp/node_http.sock',
Kaedah: 'DAPAT',
laluan: '/'
};

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

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

req.end();


Jalankan kod di atas, jika nama fail ialah http_client.js,
Salin kod Kod adalah seperti berikut:

nod http_client.js
STATUS: 200
HEADERS: {"content-type":"text/plain","date":"Isnin, 26 Jan 2015 04:25:49 GMT","connection":"close","transfer-encoding":"chunked" }
Hello Dunia

Artikel ini hanya untuk rekod Saya tidak dapat memikirkan tujuan sebenar membenarkan perkhidmatan HTTP mendengar pada Soket Domain, dan penyemak imbas tidak dapat mengaksesnya.
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn