TypeScript में नेटवर्क प्रोग्रामिंग: सॉकेट से WebSocket तक
\n\nजब हम TypeScript में नेटवर्क प्रोग्रामिंग की बात करते हैं, तो अक्सर हम जटिल वितरित सिस्टम, रियल-टाइम चैट या गेम सर्वर की कल्पना करते हैं। और यह कोई संयोग नहीं है: TypeScript अपनी सख्त टाइपिंग और स्टैटिक एनालिसिस क्षमताओं के साथ नेटवर्क एप्लीकेशन डेवलपमेंट को न केवल सुरक्षित, बल्कि वास्तव में सुविधाजनक बनाता है।
\n\nइस लेख में, हम सीखेंगे कि कैसे Node.js के बिल्ट-इन मॉड्यूल net और dgram के साथ-साथ WebSocket लाइब्रेरीज़ का उपयोग करके TypeScript में क्लाइंट-सर्वर एप्लीकेशन बनाए जाते हैं। आपको तैयार कोड उदाहरण मिलेंगे जिन्हें आप तुरंत अपने प्रोजेक्ट्स में लागू कर सकते हैं।
नेटवर्क प्रोग्रामिंग के लिए TypeScript क्यों?
\n\nकई डेवलपर्स बैकएंड के लिए JavaScript का उपयोग करने के आदी हैं, लेकिन TypeScript नेटवर्क प्रोग्रामिंग कई लाभ प्रदान करता है:
\n\n- \n
- डेटा टाइपिंग — आप पैकेट और संदेशों की संरचना पहले से परिभाषित कर सकते हैं \n
- ऑटो-कम्प्लीशन — IDE सॉकेट के मेथड और उनके पैरामीटर सुझाता है \n
- कम त्रुटियाँ — कंपाइलर रन करने से पहले ही टाइप मिसमैच पकड़ लेता है \n
आइए एक वास्तविक उदाहरण देखें। मान लीजिए हम TCP सर्वर लिख रहे हैं। JavaScript में आप ऐसे लिखेंगे:
\n\nconst server = require('net').createServer(socket => {\n socket.on('data', data => {\n // data — यह Buffer है, इसे याद रखना होगा\n });\n});\n\nजबकि TypeScript में हमें स्पष्ट टाइप मिलते हैं:
\n\nimport * as net from 'net';\n\nconst server: net.Server = net.createServer((socket: net.Socket) => {\n socket.on('data', (data: Buffer) => {\n // Buffer टाइप ज्ञात है, आत्मविश्वास से काम करें\n });\n});\n\nयह छोटी सी बात लगती है, लेकिन बड़े प्रोजेक्ट्स में यह अंतर डिबगिंग के घंटे बचाता है।
\n\nमूल बातें: TypeScript में TCP सर्वर और क्लाइंट
\n\nशुरुआत क्लासिक TCP से करते हैं। एक सरल इको सर्वर बनाते हैं जो क्लाइंट से जो प्राप्त करता है, वही वापस भेजता है।
\n\nTCP सर्वर
\n\nimport * as net from 'net';\n\nconst PORT: number = 3000;\nconst HOST: string = '127.0.0.1';\n\nconst server: net.Server = net.createServer((socket: net.Socket) => {\n console.log(`क्लाइंट कनेक्ट हुआ: ${socket.remoteAddress}:${socket.remotePort}`);\n\n socket.on('data', (data: Buffer) => {\n const message: string = data.toString().trim();\n console.log(`प्राप्त हुआ: ${message}`);\n socket.write(`इको: ${message}\\n`);\n });\n\n socket.on('end', () => {\n console.log('क्लाइंट डिस्कनेक्ट हुआ');\n });\n\n socket.on('error', (err: Error) => {\n console.error('सॉकेट त्रुटि:', err.message);\n });\n});\n\nserver.listen(PORT, HOST, () => {\n console.log(`TCP सर्वर ${HOST}:${PORT} पर शुरू हुआ`);\n});\n\nध्यान दें: हमने सभी वेरिएबल्स — server, socket, data, err — को टाइप किया है। इससे हमें पता चलता है कि सॉकेट के कौन से मेथड उपलब्ध हैं, और आकस्मिक त्रुटियों से बचा जा सकता है।
TCP क्लाइंट
\n\nimport * as net from 'net';\n\nconst client: net.Socket = new net.Socket();\n\nclient.connect(3000, '127.0.0.1', () => {\n console.log('सर्वर से कनेक्ट हुआ');\n client.write('नमस्ते, सर्वर!');\n});\n\nclient.on('data', (data: Buffer) => {\n console.log('सर्वर का जवाब:', data.toString());\n client.destroy();\n});\n\nclient.on('close', () => {\n console.log('कनेक्शन बंद हुआ');\n});\n\nइस कोड को Node.js और TypeScript वाले किसी भी प्रोजेक्ट में चलाया जा सकता है। बस @types/node इंस्टॉल करें और कंपाइल करें।
UDP: जब गति विश्वसनीयता से अधिक महत्वपूर्ण हो
\n\nअगर आपको बिना कनेक्शन स्थापित किए डेटा ट्रांसफर करना है (जैसे स्ट्रीमिंग या गेम्स के लिए), तो TypeScript UDP सॉकेट का उपयोग करें। dgram मॉड्यूल सब कुछ प्रदान करता है।
UDP सर्वर
\n\nimport * as dgram from 'dgram';\n\nconst server: dgram.Socke