บริการ TCP ที่เขียนโดย NodeJS สามารถฟังได้ในไฟล์ถุงเท้า (ซ็อกเก็ตโดเมน) และบริการ HTTP สามารถทำเช่นเดียวกัน แม้ว่ามันจะไม่สมเหตุสมผลที่จะเชื่อมต่อกับไฟล์ถุงเท้าเป็นบริการ HTTP แต่ก็เป็นเพียงความพยายามที่บริสุทธิ์ที่นี่
นี่คือวิธีเขียนบริการ TCP
การคัดลอกรหัสมีดังนี้:
var net = ต้องการ ('net');
net.createserver (ฟังก์ชั่น (ซ็อกเก็ต) {
socket.on ('data', function (data) {
socket.write ('ได้รับ:' + data);
-
}) ฟัง ('/tmp/node_tcp.sock');
เชื่อมต่อข้างบน '/tmp/node_tcp.sock' ด้านบน '
การคัดลอกรหัสมีดังนี้:
telnet /tmp/node_tcp.sock
ลอง /tmp/node_tcp.sock ...
เชื่อมต่อกับ (null)
ตัวละครหลบหนีคือ '^]'
สวัสดีโลก!
ได้รับ: สวัสดีโลก!
เพื่อความแม่นยำบทความนี้ควรเป็น TCP และ HTTP ของ NodeJS การฟังไฟล์ซ็อกเก็ตโดเมน
มันยังคงเป็นเรื่องธรรมดามากสำหรับ TCP ที่ฟังซ็อกเก็ตโดเมน ตัวอย่างเช่นบางครั้งการเข้าถึงฐานข้อมูลดั้งเดิมหรือแคชจะทำเช่นการใช้ '/tmp/mysql.sock' เพื่อเข้าถึงบริการ MySQL ดั้งเดิมเพื่อไม่ต้องเริ่มพอร์ต TCP ที่จะเปิดเผยและความปลอดภัยได้รับการปรับปรุงและประสิทธิภาพก็ดีขึ้น
ทีนี้ลองดูที่การฟัง HTTP ของ NodeJS บนซ็อกเก็ตโดเมนและแปลงจากตัวอย่างคลาสสิก
การคัดลอกรหัสมีดังนี้:
var http = ต้องการ ('http');
http.createserver (ฟังก์ชั่น (req, res) {
res.writehead (200, {'content-type': 'text/plain'});
Res.end ('Hello World/N');
}) ฟัง ('/tmp/node_http.sock');
console.log ('เซิร์ฟเวอร์ทำงานที่ /tmp/node_http.sock');
ฉันไม่รู้วิธีเข้าถึงบริการ HTTP ด้านบนในเบราว์เซอร์ดังนั้นฉันจึงใช้ Telnet เพื่อทดสอบ
การคัดลอกรหัสมีดังนี้:
telnet /tmp/node_http.sock
ลอง /tmp/node_http.sock ...
เชื่อมต่อกับ (null)
ตัวละครหลบหนีคือ '^]'
รับ / http / 1.1
http/1.1 200 ตกลง
ประเภทเนื้อหา: ข้อความ/ธรรมดา
วันที่: วันจันทร์, 26 ม.ค. 2015 04:21:09 GMT
การเชื่อมต่อ: Keep-Alive
การเข้ารหัสการถ่ายโอน: chunked
C
สวัสดีโลก
0
สามารถจัดการคำขอ HTTP ได้อย่างถูกต้องใน '/tmp/node_http.sock'
ใช้ไคลเอนต์ NodeJS HTTP เพื่อเข้าถึง
การคัดลอกรหัสมีดังนี้:
var http = ต้องการ ('http');
ตัวเลือก var = {
SocketPath: '/tmp/node_http.sock'
วิธี: 'รับ',
เส้นทาง: '/'
-
var req = http.request (ตัวเลือก, ฟังก์ชัน (res) {
console.log ('สถานะ:' + res.statuscode);
console.log ('ส่วนหัว:' + json.stringify (res.headers));
res.on ('data', ฟังก์ชั่น (ก้อน) {
console.log (chunk.toString ());
-
-
req.end ();
เรียกใช้รหัสด้านบนหากชื่อไฟล์เป็น http_client.js
การคัดลอกรหัสมีดังนี้:
โหนด http_client.js
สถานะ: 200
ส่วนหัว: {"เนื้อหาประเภท": "ข้อความ/ธรรมดา", "วันที่": "จันทร์, 26 ม.ค. 2015 04:25:49 GMT", "การเชื่อมต่อ": "ปิด", "การถ่ายโอนการเข้ารหัส": "chunked"}
สวัสดีโลก
บทความนี้มีไว้สำหรับบันทึกเท่านั้นและฉันไม่สามารถจินตนาการถึงจุดประสงค์ที่แท้จริงของการให้บริการ HTTP ฟังบนซ็อกเก็ตโดเมนและเบราว์เซอร์ไม่สามารถเข้าถึงได้