يمكن أن تستمع خدمة TCP التي كتبها NodeJS على ملف جورب (مقبس المجال) ، ويمكن أن تفعل خدمة HTTP الخاصة بها نفس الشيء. على الرغم من أنه ليس من المنطقي الاتصال بملف جورب كخدمة HTTP ، إلا أنها مجرد محاولة خالصة هنا.
هذه هي الطريقة التي يتم بها كتابة خدمة TCP
نسخة الكود كما يلي:
var net = require ('net') ؛
net.createserver (وظيفة (مقبس) {
Socket.on ('Data' ، function (data) {
Socket.write ('تم استلامه:' + البيانات) ؛
}) ؛
}). الاستماع ('/tmp/node_tcp.sock') ؛
قم بتوصيل ما سبق "/tmp/node_tcp.sock"
نسخة الكود كما يلي:
telnet /tmp/node_tcp.sock
محاولة /tmp/node_tcp.sock ...
متصل بـ (NULL).
شخصية الهروب هي '^]'.
مرحبا بالعالم!
وردت: مرحبا العالم!
لكي تكون دقيقة ، يجب أن تكون هذه المقالة هي Nodejs TCP و HTTP للاستماع لملفات مقبس المجال.
لا يزال شائعًا جدًا بالنسبة للاستماع إلى مآخذ النطاق. على سبيل المثال ، سيتم الوصول في بعض الأحيان إلى قاعدة البيانات أو ذاكرة التخزين المؤقت الأصلية ، مثل استخدام "/tmp/mysql.sock" للوصول إلى خدمة MySQL الأصلية ، بحيث لا توجد حاجة لبدء تشغيل منفذ TCP ، وتحسين الأمان وتحسين الأداء أيضًا.
الآن دعونا نلقي نظرة على Nodejs 'HTTP الاستماع على مقبس المجال ، ونحوله من أمثلة كلاسيكية.
نسخة الكود كما يلي:
var http = require ('http') ؛
http.createserver (وظيفة (req ، الدقة) {
Res.Writehead (200 ، {'content-type': 'text/plain'}) ؛
res.end ('Hello World/n') ؛
}). الاستماع ('/tmp/node_http.sock') ؛
console.log ('خادم تشغيل at /tmp/node_http.sock') ؛
لا أعرف كيفية الوصول إلى خدمة HTTP أعلاه في المتصفح ، لذلك أستخدم Telnet لاختبارها
نسخة الكود كما يلي:
telnet /tmp/node_http.sock
محاولة /tmp/node_http.sock ...
متصل بـ (NULL).
شخصية الهروب هي '^]'.
GET / HTTP / 1.1
HTTP/1.1 200 OK
نوع المحتوى: النص/عادي
التاريخ: الاثنين ، 26 يناير 2015 04:21:09 بتوقيت جرينتش
الاتصال: الحفاظ على الحفل
ترميز النقل: قطعة
ج
مرحبا بالعالم
0
يمكن التعامل بشكل صحيح مع طلبات HTTP على '/tmp/node_http.sock'.
استخدم عميل NodeJS HTTP للوصول
نسخة الكود كما يلي:
var http = require ('http') ؛
خيارات var = {
SocketPath: '/tmp/node_http.sock' ،
الطريقة: "الحصول على" ،
طريق: '/'
} ؛
var req = http.request (الخيارات ، الدالة (الدقة) {
console.log ('الحالة:' + res.StatusCode) ؛
console.log ('headers:' + json.stringify (res.Headers)) ؛
res.on ('Data' ، function (chunk) {
console.log (chunk.toString ()) ؛
}) ؛
}) ؛
req.end () ؛
قم بتنفيذ الرمز أعلاه ، إذا كان اسم الملف هو http_client.js ،
نسخة الكود كما يلي:
عقدة http_client.js
الحالة: 200
الرؤوس: {"type-content-type": "text/plain" ، "Date": "Mon ، 26 Jan 2015 04:25:49 GMT" ، "Connection": "Close" ،
مرحبا بالعالم
هذه المقالة مخصصة فقط ، ولا أستطيع أن أتخيل الغرض الفعلي المتمثل في السماح لخدمة HTTP بالاستماع إلى مقبس المجال ، ولا يمكن للمتصفح الوصول إليها.