http.createServer()
إنشاء خادم HTTP http.createServer()
http.createServer() تنشئ كائن خادم HTTP جديد، وتضيف الدالة الممرَّرة كمستمع لحدث 'request' — لكنه لا يبدأ الاستماع فعليًا إلا بعد استدعاء listen().
http.createServer([options][, requestListener]) تُرجع كائن http.Server. requestListener دالة تُستدعى في كل مرة يصل فيها طلب، وتستقبل معاملين: req (كائن http.IncomingMessage يحمل تفاصيل الطلب) و res (كائن http.ServerResponse تكتب فيه الرد).
إنشاء الخادم وحده لا يجعله يستمع للطلبات — يجب استدعاء server.listen(port) صراحة ليبدأ فعليًا استقبال الاتصالات على المنفذ المحدَّد.
الصياغة
http.createServer([options][, requestListener])
📄 مثال
const http = require('node:http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ message: 'أهلًا بك' }));
});
server.listen(3000, () => {
console.log('الخادم يعمل على المنفذ 3000');
});أهم المعاملات
| المعامل | الوظيفة |
|---|---|
| options | إعدادات اختيارية للخادم (نادرًا ما تُستخدم بالأساسيات) |
| requestListener(req, res) | تُسجَّل تلقائيًا كمستمع لحدث 'request' |
💡 نصائح عملية
- الخادم لا يبدأ الاستماع فعليًا إلا بعد استدعاء server.listen(port) صراحة
- لواجهات REST متعددة المسارات، Express فوق http.createServer يوفّر توجيهًا (routing) أسهل بكثير من التحقق اليدوي من req.url
⚠️ أخطاء شائعة
- نسيان استدعاء res.end() يترك الطلب معلَّقًا للأبد دون أن يصل أي رد للعميل
- الكتابة على res بعد استدعاء res.end() يرمي خطأ — الرد يُعتبر مكتملًا ومقفلًا بمجرد end()
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار NODEJS الكامل بالعربي.