সার্ভার অবজেক্ট
Node.js Server . Server :
http.Server
HTTP সার্ভার তৈরি করতে
https.Server
HTTPS সার্ভার তৈরি করতে
net.Server
TCP সার্ভার তৈরি করতে
tls.Server
TLS/SSL সার্ভার তৈরি করতে
এই সার্ভার অবজেক্টগুলি তাদের নিজ নিজ প্রোটোকল অনুযায়ী ক্লায়েন্ট সংযোগ, প্রক্রিয়া অনুরোধ এবং রিটার্ন প্রতিক্রিয়া পরিচালনা করে।
সাধারণ সার্ভার পদ্ধতি
| পদ্ধতি | ব্যাখ্যা |
|---|---|
| server.listen([port][, host][, backlog][, callback]) | সার্ভার সংযোগের জন্য জিজ্ঞাসা শুরু করে. সার্ভার আবদ্ধ হলে কলব্যাক কার্যকর করা হয় |
| server.close([callback]) | সার্ভারকে নতুন সংযোগ গ্রহণ করা বন্ধ করে। সমস্ত সংযোগ বন্ধ হয়ে গেলে কলব্যাক বলা হয় |
| server.address() | সার্ভারের বাইন্ড অ্যাড্রেস, অ্যাড্রেস ফ্যামিলি নাম এবং পোর্ট ফেরত দেয় |
| server.getConnections(callback) | অ্যাসিঙ্ক্রোনাসভাবে সার্ভারে সমবর্তী সংযোগের সংখ্যা পায় |
সাধারণ সার্ভার ইভেন্ট
| ঘটনা | ব্যাখ্যা |
|---|---|
| 'close' | সার্ভার বন্ধ হলে রিলিজ হয় |
| 'connection' | একটি নতুন লিঙ্ক তৈরি করা হলে ইস্যু করা হয় |
| 'error' | কোনো ত্রুটি ঘটলে ইস্যু করা হয় |
| 'listening' | server.listen() bind |
HTTP সার্ভার
Node.js HTTP http.createServer() :
const http = প্রয়োজন('http'); // একটি HTTP সার্ভার তৈরি করুন const সার্ভার = http.createServer((req, res) => { // অনুরোধ হ্যান্ডেল res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('হ্যালো ওয়ার্ল্ড\n'); }); // সার্ভার শুরু করুন const PORT = 8080; server.listen(PORT, () => { console.log(`সার্ভার http://localhost:${PORT}/` এ চলছে); }); // সার্ভার ইভেন্টগুলি পরিচালনা করুন server.on('error', (err) => { console.error(`সার্ভার ত্রুটি: ${err.message}`); }); server.on('close', () => { console.log('সার্ভার বন্ধ'); });
HTTPS সার্ভার
একটি HTTPS সার্ভারের জন্য SSL সার্টিফিকেট প্রয়োজন এবং এটি https.createServer() পদ্ধতি ব্যবহার করে তৈরি করা হয়:
const https = প্রয়োজন('https'); const fs = প্রয়োজন('fs'); // SSL বিকল্প - একটি উত্পাদন পরিবেশে, সঠিকভাবে স্বাক্ষরিত শংসাপত্র ব্যবহার করুন const বিকল্প = { কী: fs.readFileSync('server-key.pem'), // আপনার কী ফাইলের পাথ cert: fs.readFileSync('server-cert.pem') // আপনার সার্টিফিকেট ফাইলের পাথ }; // একটি HTTPS সার্ভার তৈরি করুন const সার্ভার = https.createServer(options, (req, res) => { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('হ্যালো সিকিউর ওয়ার্ল্ড\n'); }); // সার্ভার শুরু করুন const PORT = 3443; server.listen(PORT, () => { console.log(`সার্ভার https://localhost:${PORT}/` এ চলছে); });
TCP সার্ভার (নেট. সার্ভার)
net.createServer() পদ্ধতি ব্যবহার করে একটি TCP সার্ভার তৈরি করা হয়:
const net = প্রয়োজন ('নেট'); // একটি TCP সার্ভার তৈরি করুন const server = net.createServer((সকেট) => { console.log('ক্লায়েন্ট সংযুক্ত'); // ক্লায়েন্ট থেকে ডেটা পরিচালনা করতে socket.on('ডেটা', (ডেটা) => { console.log(`প্রাপ্ত: ${data}`); socket.write(`Echo: ${data}`); }); // ক্লায়েন্ট সংযোগ বিচ্ছিন্ন হ্যান্ডেল socket.on('শেষ', () => { console.log('ক্লায়েন্ট সংযোগ বিচ্ছিন্ন'); }); // সকেট ত্রুটিগুলি পরিচালনা করুন socket.on('error', (err) => { console.error(`সকেট ত্রুটি: ${err.message}`); }); }); // সার্ভার শুরু করুন const PORT = 8888; server.listen(PORT, () => { console.log(`TCP সার্ভার পোর্টে শুনছে ${PORT}`); }); // এটি অনুরোধ করার পরে সার্ভারের তথ্য পান server.on('শোনা', () => { const ঠিকানা = server.address(); console.log(`সার্ভার তথ্য: ${JSON.stringify(address)}`); });
TLS/SSL সার্ভার
tls.createServer() পদ্ধতি ব্যবহার করে একটি নিরাপদ TLS/SSL সার্ভার তৈরি করা হয়েছে:
const tls = প্রয়োজন('tls'); const fs = প্রয়োজন('fs'); // SSL বিকল্প const বিকল্প = { কী: fs.readFileSync('server-key.pem'), cert: fs.readFileSync('server-cert.pem'), // ক্লায়েন্ট শংসাপত্রের অনুরোধ করুন (ঐচ্ছিক) অনুরোধ শংসাপত্র: সত্য, // সার্টিফিকেট ছাড়া সংযোগ প্রত্যাখ্যান করুন (ঐচ্ছিক) rejectUnauthorized: মিথ্যা }; // একটি TLS সার্ভার তৈরি করুন const সার্ভার = tls.createServer(বিকল্প, (সকেট) => { console.log('ক্লায়েন্ট সুরক্ষিতভাবে সংযুক্ত'); // ক্লায়েন্ট একটি শংসাপত্র জারি করেছে কিনা তা পরীক্ষা করুন যদি (socket.authorized) { console.log('ক্লায়েন্ট অনুমোদিত'); } অন্য { console.log('ক্লায়েন্ট অননুমোদিত'); } // ক্লায়েন্ট থেকে ডেটা পরিচালনা করতে socket.on('ডেটা', (ডেটা) => { console.log(`প্রাপ্ত: ${data}`); socket.write(`Secure echo: ${data}`); }); // ক্লায়েন্ট সংযোগ বিচ্ছিন্ন হ্যান্ডেল socket.on('শেষ', () => { console.log('ক্লায়েন্ট সংযোগ বিচ্ছিন্ন'); }); }); // সার্ভার শুরু করুন const PORT = 8443; server.listen(PORT, () => { console.log(`TLS সার্ভার পোর্টে শুনছে ${PORT}`); });
রাউটিং সহ HTTP সার্ভার
মৌলিক রাউটিং সহ একটি সম্পূর্ণ HTTP সার্ভার:
const http = প্রয়োজন('http'); const url = প্রয়োজন('url'); // মৌলিক রাউটিং সহ একটি HTTP সার্ভার তৈরি করুন const সার্ভার = http.createServer((req, res) => { // URL পার্স করুন const parsedUrl = url.parse(req.url, true); const path = parsedUrl.pathname; const trimmedPath = path.replace(/^\/+|\/+$/g, ''); // HTTP পদ্ধতি পান const পদ্ধতি = req.method.toLowerCase(); // ক্যোয়ারী প্যারামিটার পান const queryParams = parsedUrl.query; // অনুরোধটি লগ করুন console.log(`অনুরোধ গৃহীত হয়েছে: ${method} ${trimmedPath}`); // রুট হ্যান্ডলার চলুন প্রতিক্রিয়া = { অবস্থা: 404, সামগ্রীর ধরন: 'অ্যাপ্লিকেশন/জেসন', পেলোড: {বার্তা: 'নট ফাউন্ড' } }; // মৌলিক রাউটিং যদি (পদ্ধতি === 'পান') { যদি (trimmedPath === '') { // বাড়ির পথ প্রতিক্রিয়া = { অবস্থা: 200, বিষয়বস্তুর প্রকার: 'টেক্সট/এইচটিএমএল', পেলোড: 'Home Page
Welcome to the server
' }; } else if (trimmedPath === 'api/users') { // API রুট - তালিকা ব্যবহারকারী প্রতিক্রিয়া = { অবস্থা: 200, সামগ্রীর ধরন: 'অ্যাপ্লিকেশন/জেসন', পেলোড: { ব্যবহারকারী: [ {আইডি: 1, নাম: 'জন' }, {আইডি: 2, নাম: 'জেন' } ] } }; } else if (trimmedPath.startsWith('api/users/')) { // API রুট - আইডি দ্বারা ব্যবহারকারী পান const userId = trimmedPath.split('/')[2]; প্রতিক্রিয়া = { অবস্থা: 200, সামগ্রীর ধরন: 'অ্যাপ্লিকেশন/জেসন', পেলোড: { id: userId, নাম: `User ${userId}` } }; } } // প্রতিক্রিয়া ফেরত পাঠান res.setHeader('Content-Type', response.contentType); res.writeHead(response.status); // পেলোড একটি অবজেক্ট হলে স্ট্রিং এ রূপান্তর করুন const payloadString = typeof response.payload === 'অবজেক্ট' ? JSON.stringify(response.payload) : প্রতিক্রিয়া.পেলোড; res.end(payloadString); }); // সার্ভার শুরু করুন const PORT = 8080; server.listen(PORT, () => { console.log(`সার্ভার http://localhost:${PORT}/` এ চলছে); });
সার্ভার সময়সীমা এবং সীমাবদ্ধতা
সার্ভারের সময়সীমা এবং সংযোগ সীমা কনফিগার করা হচ্ছে:
const http = প্রয়োজন('http'); // একটি HTTP সার্ভার তৈরি করুন const সার্ভার = http.createServer((req, res) => { // বিলম্বিত প্রতিক্রিয়া অনুকরণ করা setTimeout(() => { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('বিলম্বের পরে প্রতিক্রিয়া\n'); }, 2000); }); // সার্ভার টাইমআউট কনফিগার করুন server.timeout = 10000; // 10 সেকেন্ড (ডিফল্ট 120000 বা 2 মিনিট) server.keepAliveTimeout = 5000; // 5 সেকেন্ড (ডিফল্ট 5000) server.maxHeadersCount = 1000; // হেডারের সর্বোচ্চ সংখ্যা (ডিফল্ট 2000) server.maxRequestsPerSocket = 100; // সকেট প্রতি সর্বোচ্চ অনুরোধ (Node.js 14+) // সার্ভার শুরু করুন const PORT = 8080; server.listen(PORT, () => { console.log(`http://localhost:${PORT}/`-এ কনফিগার করা টাইমআউট সহ সার্ভার); // সার্ভার কনফিগারেশন দেখান console.log(`সার্ভার টাইমআউট: ${server.timeout}ms`); console.log(`কিপ-লাইভ টাইমআউট: ${server.keepAliveTimeout}ms`); console.log(`সর্বোচ্চ হেডার সংখ্যা: ${server.maxHeadersCount}`); console.log(`সকেট প্রতি সর্বোচ্চ অনুরোধ: ${server.maxRequestsPerSocket || 'N/A'}`); });
HTTP/2 সার্ভার
একটি HTTP/2 সার্ভার তৈরি করা (Node.js v8.4.0 এ প্রবর্তিত):
const http2 = প্রয়োজন('http2'); const fs = প্রয়োজন('fs'); // HTTP/2 এর জন্য SSL বিকল্প const বিকল্প = { কী: fs.readFileSync('server-key.pem'), শংসাপত্র: fs.readFileSync('server-cert.pem') }; // একটি HTTP/2 সার্ভার তৈরি করুন const সার্ভার = http2.createSecureServer(বিকল্প); // ইনকামিং স্ট্রীম পরিচালনা করুন server.on('স্ট্রিম', (স্ট্রিম, হেডার) => { const path = হেডার [':পথ']; const মেথড = হেডার[':মেথড']; console.log(`${method} ${path}`); // অনুরোধে সাড়া দিন stream.respond({ 'content-type': 'text/html', ':স্থিতি': 200 }); stream.end('HTTP/2 Server
This page was served via HTTP/2
'); }); // সার্ভার শুরু করুন const PORT = 8443; server.listen(PORT, () => { console.log(`HTTP/2 সার্ভার https://localhost:${PORT}/` এ চলছে); });