تخطَّ إلى المحتوى

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 الكامل بالعربي.