नेटवर्क प्रोग्रामिंग में जावास्क्रिप्ट क्यों?
\nएक समय था जब जावास्क्रिप्ट केवल बटनों को एनिमेट करने और फॉर्म को सत्यापित करने की भाषा थी। आज यह नेटवर्क एप्लिकेशन बनाने का सबसे शक्तिशाली उपकरण है। जावास्क्रिप्ट में नेटवर्क प्रोग्रामिंग रियल-टाइम की दुनिया के द्वार खोलती है: चैट, ऑनलाइन गेम, डेटा स्ट्रीमिंग, मॉनिटरिंग सिस्टम और यहां तक कि आपके अपने वेब सर्वर।
\nइस लेख में हम दस्तावेज़ीकरण को उबाऊ तरीके से नहीं दोहराएंगे। हम एक सरल HTTP अनुरोध से लेकर पूर्ण WebSocket कनेक्शन तक का सफर तय करेंगे। आप देखेंगे कि कैसे Node.js ब्राउज़र भाषा को एक शक्तिशाली नेटवर्क इंजन में बदल देता है। तैयार हैं? चलिए शुरू करते हैं!
\n\nमूल बातें: HTTP और Node.js मॉड्यूल
\nकोई भी जावास्क्रिप्ट में नेटवर्क प्रोग्रामिंग प्रोटोकॉल को समझने से शुरू होती है। सबसे लोकप्रिय है HTTP। ब्राउज़र में आप fetch() या XMLHttpRequest करते हैं, लेकिन सर्वर साइड के लिए अलग दृष्टिकोण की आवश्यकता होती है।
एक सरल HTTP सर्वर बनाना
\nNode.js में बिल्ट-इन http मॉड्यूल है। यहाँ एक न्यूनतम उदाहरण है जो किसी भी अनुरोध पर "नमस्ते, दुनिया!" का उत्तर देता है:
const http = require('http');\n\nconst server = http.createServer((req, res) => {\n res.statusCode = 200;\n res.setHeader('Content-Type', 'text/plain');\n res.end('नमस्ते, दुनिया! जावास्क्रिप्ट में नेटवर्क प्रोग्रामिंग काम कर रही है!\\n');\n});\n\nserver.listen(3000, '127.0.0.1', () => {\n console.log('सर्वर http://127.0.0.1:3000/ पर चालू है');\n});\n\nइस कोड को node server.js के माध्यम से चलाएं और ब्राउज़र खोलें। आप हमारा संदेश देखेंगे। सरल है, है ना? लेकिन यह तो केवल शुरुआत है। असली जादू तब शुरू होता है जब हम सॉकेट के साथ काम करते हैं।
जावास्क्रिप्ट में TCP सॉकेट के साथ काम करना
\nHTTP एक एप्लिकेशन-लेयर प्रोटोकॉल है जो TCP के ऊपर बना है। यदि आपको डेटा ट्रांसफर पर पूर्ण नियंत्रण चाहिए, तो जावास्क्रिप्ट सॉकेट का उपयोग करें। Node.js में इसके लिए net मॉड्यूल जिम्मेदार है।
TCP सर्वर: डेटा प्राप्त करना
\nकल्पना करें कि आप एक सरल इको सर्वर लिख रहे हैं। क्लाइंट कनेक्ट होता है, संदेश भेजता है, सर्वर उसे वापस भेजता है। यह इस प्रकार दिखता है:
\nconst net = require('net');\n\nconst server = net.createServer((socket) => {\n console.log('क्लाइंट कनेक्ट हुआ');\n\n socket.on('data', (data) => {\n console.log('प्राप्त हुआ:', data.toString());\n socket.write('इको: ' + data.toString());\n });\n\n socket.on('end', () => {\n console.log('क्लाइंट डिस्कनेक्ट हुआ');\n });\n});\n\nserver.listen(8080, () => {\n console.log('TCP सर्वर पोर्ट 8080 पर सुन रहा है');\n});\n\nअब इस सर्वर के लिए एक क्लाइंट लिखते हैं। जावास्क्रिप्ट में क्लाइंट-सर्वर दो-तरफा संचार है:
\nconst net = require('net');\n\nconst client = net.createConnection({ port: 8080 }, () => {\n console.log('सर्वर से कनेक्ट हुए');\n client.write('नमस्ते, सर्वर!');\n});\n\nclient.on('data', (data) => {\n console.log('सर्वर का उत्तर:', data.toString());\n client.end();\n});\n\nclient.on('end', () => {\n console.log('सर्वर से डिस्कनेक्ट हुए');\n});\n\nपहले सर्वर चलाएं, फिर क्लाइंट। आप देखेंगे कि डेटा आगे-पीछे कैसे यात्रा करता है। यह सभी जावास्क्रिप्ट नेटवर्क प्रोटोकॉल का आधार है।
\n\nWebSocket: बिना देरी के रियल-टाइम
\nHTTP और TCP अच्छे हैं, लेकिन उनमें एक समस्या है: नया डेटा प्राप्त करने के लिए क्लाइंट को लगातार अनुरोध (polling) करना पड़ता है। यह अक्षम है। जावास्क्रिप्ट में WebSocket इस समस्या को हल करता है — कनेक्शन स्थापित होने के बाद सर्वर किसी भी समय डेटा भेज सकता है।
\n\nNode.js पर WebSocket (ws लाइब्रेरी)
\nलाइब्रेरी इंस्टॉल करें: npm install ws
सर्वर:
\nconst WebSocket = require('ws');\n\nconst wss = new WebSocket.Server({ port: 8081 });\n\nwss.on('connection', (ws) => {\n console.log('WebSocket क्लाइंट कनेक्ट हुआ');\n\n ws.on('message', (message) => {\n console.log('प्राप्त हुआ:',