Node.js के लिए WebSocket लाइब्रेरीज़: ws, Socket.IO और µWebSockets
\n\nWebSocket एक प्रोटोकॉल है जो क्लाइंट और सर्वर के बीच स्थायी द्विदिश कनेक्शन प्रदान करता है। Node.js इकोसिस्टम में इस प्रोटोकॉल को लागू करने वाली कई लोकप्रिय लाइब्रेरीज़ मौजूद हैं। इस लेख में हम तीन मुख्य लाइब्रेरीज़ पर विचार करेंगे: ws, Socket.IO और µWebSockets (uWS)। आप सीखेंगे कि उन्हें कैसे स्थापित करें, एक सरल चैट सर्वर कैसे लिखें और अपने कार्य के लिए उपयुक्त उपकरण कैसे चुनें।
1. ws लाइब्रेरी — हल्की और उच्च प्रदर्शन वाली
\n\nws Node.js के लिए सबसे लोकप्रिय और तेज़ WebSocket लाइब्रेरी है। यह बिना किसी अतिरिक्त ओवरले के शुद्ध WebSocket प्रोटोकॉल को लागू करती है, जो न्यूनतम ओवरहेड और अधिकतम गति प्रदान करती है।
\n\nस्थापना
\nnpm install ws\n\nउदाहरण: इको सर्वर
\nconst WebSocket = require('ws');\n\nconst server = new WebSocket.Server({ port: 8080 });\n\nserver.on('connection', (ws) => {\n console.log('क्लाइंट कनेक्ट हुआ');\n\n ws.on('message', (message) => {\n console.log(`प्राप्त: ${message}`);\n ws.send(`इको: ${message}`);\n });\n\n ws.on('close', () => {\n console.log('क्लाइंट डिस्कनेक्ट हुआ');\n });\n});\n\nconsole.log('WebSocket सर्वर ws://localhost:8080 पर शुरू हुआ');\n\nक्लाइंट भाग (ब्राउज़र)
\nconst socket = new WebSocket('ws://localhost:8080');\n\nsocket.onopen = () => {\n console.log('कनेक्शन स्थापित हुआ');\n socket.send('नमस्ते, सर्वर!');\n};\n\nsocket.onmessage = (event) => {\n console.log('सर्वर से उत्तर:', event.data);\n};\n\nsocket.onerror = (error) => {\n console.error('WebSocket त्रुटि:', error);\n};\n\nws की विशेषताएँ:
\n- \n
- प्रदर्शन: थ्रूपुट परीक्षणों में Socket.IO से 2-3 गुना तेज़। \n
- न्यूनतमता: कोई अंतर्निहित पुनः कनेक्शन तंत्र, कमरे या फ़ॉलबैक ट्रांसपोर्ट नहीं। \n
- समर्थन: RFC 6455 के साथ पूर्ण संगतता। \n
- उपयोग: रीयल-टाइम अनुप्रयोगों के लिए आदर्श जहाँ गति महत्वपूर्ण है (स्टॉक डेटा, गेम, उच्च लोड वाले चैट)। \n
2. Socket.IO — प्रोडक्शन के लिए सुविधा और विश्वसनीयता
\n\nSocket.IO केवल एक WebSocket लाइब्रेरी नहीं है, बल्कि रीयल-टाइम अनुप्रयोगों के लिए एक संपूर्ण फ्रेमवर्क है। यह WebSocket के ऊपर जोड़ता है: स्वचालित पुनः कनेक्शन, कमरे, नाम स्थान, लॉन्ग-पोलिंग पर फ़ॉलबैक (यदि WebSocket समर्थित नहीं है) और एक सुविधाजनक API।
\n\nस्थापना
\nnpm install socket.io\n\nउदाहरण: सरल चैट सर्वर
\nconst http = require('http');\nconst { Server } = require('socket.io');\n\nconst server = http.createServer();\nconst io = new Server(server, {\n cors: { origin: '*' }\n});\n\nio.on('connection', (socket) => {\n console.log(`उपयोगकर्ता कनेक्ट हुआ: ${socket.id}`);\n\n socket.on('chat message', (msg) => {\n console.log(`संदेश: ${msg}`);\n io.emit('chat message', msg); // सभी को भेजें\n });\n\n socket.on('disconnect', () => {\n console.log(`उपयोगकर्ता डिस्कनेक्ट हुआ: ${socket.id}`);\n });\n});\n\nserver.listen(3000, () => {\n console.log('Socket.IO सर्वर http://localhost:3000 पर');\n});\n\nक्लाइंट भाग (ब्राउज़र)
\n<script src="/socket.io/socket.io.js"></script>\n<script>\n const socket = io('http://localhost:3000');\n\n socket.on('connect', () => {\n console.log('सर्वर से कनेक्ट हुआ');\n socket.emit('chat message', 'सभी को नमस्ते!');\n });\n\n socket.on('chat message', (msg) => {\n const item = document.createElement('li');\n item.textContent = msg;\n document.getElementById('messages').appendChild(item);\n });\n</script>\n\nSocket.IO की विशेषताएँ:
\n- \n
- स्वचालित पुनः कनेक्शन: कनेक्शन टूटने पर क्लाइंट स्वचालित रूप से पुनः कनेक्ट करने का प्रयास करता है। \n
पुस्तकालय में भी
Rust के लिए crossbeam: उदाहरणों के साथ पूर्ण गाइड
Rust के लिए HTTP-क्लाइंट: सर्वश्रेष्ठ लाइब्रेरियों का अवलोकन (reqwest, ureq, hyper)
Rust में क्रिप्टोग्राफी: ring और sha2 के साथ एन्क्रिप्शन और हैशिंग
Go (Golang) के लिए CLI फ्रेमवर्क: कंसोल एप्लिकेशन बनाने के लिए उपकरणों की पूर्ण समीक्षा
Go (Golang) में ऑब्जेक्ट सीरियलाइज़ेशन: JSON, XML, Gob और Protocol Buffers
अनुशंसाएँ