আপনি যে কোনো ওয়েবসাইটে গিয়েছেন তা একই মূল উপায়ে কাজ করে: আপনার ব্রাউজার একটি সার্ভারে একটি রিকোয়েস্ট পাঠায়, আর সার্ভার একটি রেসপন্স ফেরত পাঠায়। http মডিউল Node.js-কে সেই আদান-প্রদানের সার্ভার পাশে খেলতে দেয়, কোনো এক্সটার্নাল প্যাকেজের প্রয়োজন ছাড়াই।
const http = require('http')
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' })
res.end('Hello from Node!')
})
server.listen(3000, () => {
console.log('Server running at http://localhost:3000')
})এই ফাইলটি node দিয়ে চালান, তারপর একটি ব্রাউজারে http://localhost:3000 খুলুন। আপনি এখন পর্যন্ত চালানো স্ক্রিপ্টগুলোর মতো নয়, এটি শেষ হয় না — server.listen() প্রোগ্রামটিকে জীবিত রাখে, রিকোয়েস্টের জন্য অপেক্ষা করে, যতক্ষণ না আপনি Ctrl+C দিয়ে এটি থামান।
createServer()-এ পাস করা ফাংশনটি প্রতিটি আগত রিকোয়েস্টের জন্য একবার চলে, আর দুটি অবজেক্ট পায়:
| অবজেক্ট | এতে কী থাকে |
|---|---|
req (request) | ব্রাউজার কী চেয়েছে — req.url, req.method, req.headers |
res (response) | আপনি কী ফেরত পাঠাচ্ছেন — res.writeHead(), res.write(), res.end() |
res.end() আবশ্যক — এটি কল না হওয়া পর্যন্ত ব্রাউজার অপেক্ষা করতে থাকে, আর এটি ছাড়া সংযোগ কখনো শেষ হয় না।
const server = http.createServer((req, res) => {
if (req.url === '/') {
res.writeHead(200, { 'Content-Type': 'text/plain' })
res.end('Welcome home')
} else if (req.url === '/about') {
res.writeHead(200, { 'Content-Type': 'text/plain' })
res.end('About this site')
} else {
res.writeHead(404, { 'Content-Type': 'text/plain' })
res.end('Not found')
}
})req.url চেক করা এই if/else চেইনটি মূলত ঠিক তাই যা একটি ওয়েব ফ্রেমওয়ার্কের "রাউটার" করে — শুধু অনেক বেশি বন্ধুত্বপূর্ণ সিনট্যাক্স আর অনেক বেশি বিল্ট-ইন সুবিধা সহ। এই কোর্সের পরে Express পাঠগুলোতে আপনি এটি ভালোভাবে দেখবেন।
res.writeHead(200, { 'Content-Type': 'text/html' })
res.end('<h1>Hello!</h1><p>This is a real webpage.</p>')Content-Type হেডার ব্রাউজারকে বলে দেয় এরপর যা আসবে তা কীভাবে বুঝতে হবে। এটিকে text/html সেট করলে ব্রাউজার ট্যাগগুলো রেন্ডার করে; text/plain রেখে দিলে এটি রেন্ডার না করে কাঁচা <h1> টেক্সট দেখায়।
writeHead()-এর প্রথম আর্গুমেন্ট হলো স্ট্যাটাস কোড — একটি সংখ্যা যা ব্রাউজারকে বলে রিকোয়েস্টটি কেমন হয়েছে। 200-এর অর্থ সফল; 404-এর অর্থ "পাওয়া যায়নি"; 500-এর অর্থ সার্ভার একটি error-এর মুখোমুখি হয়েছে। এগুলো সঠিক করা গুরুত্বপূর্ণ — ব্যর্থ হওয়া কিন্তু 200 ফেরত দেওয়া একটি পেজ সার্চ ইঞ্জিন আর মনিটরিং টুলের কাছে সফল দেখায় এমনকি যখন এটি না।