लाइब्रेरी ws: Node.js के लिए WebSocket
लाइब्रेरी ws Node.js के लिए WebSocket प्रोटोकॉल का एक सरल, तेज़ और पूरी तरह से परीक्षित कार्यान्वयन है। यह सर्वर-साइड JavaScript पर रीयल-टाइम एप्लिकेशन (चैट, ऑनलाइन गेम, सूचनाएं, सहयोगात्मक संपादन) बनाने के लिए डी-फैक्टो मानक है। बिल्ट-इन http मॉड्यूल के विपरीत, ws लगातार HTTP अनुरोधों के बिना क्लाइंट और सर्वर के बीच पूर्ण द्वि-दिशात्मक संचार प्रदान करता है।
मुख्य विशेषताएं
- RFC 6455 प्रोटोकॉल का पूर्ण समर्थन — सभी आधुनिक ब्राउज़रों के साथ काम करता है।
- उच्च प्रदर्शन — न्यूनतम मेमोरी खपत और कम विलंबता।
- सरल API — कोड की कुछ पंक्तियों में सर्वर और क्लाइंट बनाना।
- एक्सटेंशन के लिए समर्थन — डेटा संपीड़न (permessage-deflate)।
- HTTP सर्वर के साथ एकीकरण — Express या अन्य फ्रेमवर्क के साथ पोर्ट साझा किया जा सकता है।
- स्वचालित पुनः कनेक्शन — क्लाइंट के लिए बिल्ट-इन तंत्र।
इंस्टॉलेशन
npm के माध्यम से इंस्टॉलेशन:
npm install wsइंस्टॉलेशन के बाद लाइब्रेरी उपयोग के लिए तैयार है।
WebSocket सर्वर बनाना
आइए एक सरल सर्वर बनाएं जो कनेक्शन स्वीकार करता है और एक स्वागत संदेश भेजता है:
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', function connection(ws) { console.log('नया क्लाइंट जुड़ा');
// क्लाइंट को संदेश भेजें ws.send('WebSocket सर्वर में आपका स्वागत है!');
// इनकमिंग संदेशों को संभालें ws.on('message', function incoming(message) { console.log('प्राप्त: %s', message); // वापस भेजें (इको) ws.send('इको: ' + message); });
// कनेक्शन बंद होने को संभालें ws.on('close', function() { console.log('क्लाइंट डिस्कनेक्ट हुआ'); });});
console.log('WebSocket सर्वर ws://localhost:8080 पर शुरू हुआ');WebSocket क्लाइंट बनाना
क्लाइंट सर्वर से जुड़ता है, एक संदेश भेजता है और उत्तर प्राप्त करता है:
const WebSocket = require('ws');
const ws = new WebSocket('ws://localhost:8080');
ws.on('open', function open() { console.log('कनेक्शन स्थापित'); ws.send('नमस्ते, सर्वर!');});
ws.on('message', function incoming(data) { console.log('सर्वर से उत्तर: %s', data); ws.close();});
ws.on('close', function() { console.log('कनेक्शन बंद');});
ws.on('error', function error(err) { console.error('त्रुटि:', err.message);});JSON और एकाधिक क्लाइंट के साथ काम करना
एक वास्तविक उदाहरण — एक चैट सर्वर जो सभी जुड़े क्लाइंट को संदेश प्रसारित (broadcast) करता है:
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', function connection(ws, req) { console.log('क्लाइंट जुड़ा। कुल क्लाइंट:', wss.clients.size);
ws.on('message', function incoming(message) { // JSON पार्स करें let data; try { data = JSON.parse(message); } catch (e) { ws.send(JSON.stringify({ error: 'अमान्य JSON' })); return; }
// भेजने वाले को छोड़कर सभी को प्रसारित करें wss.clients.forEach(function each(client) { if (client !== ws && client.readyState === WebSocket.OPEN) { client.send(JSON.stringify({ username: data.username, text: data.text, timestamp: Date.now() })); } }); });
ws.send(JSON.stringify({ system: 'चैट में आपका स्वागत है!' }));});क्लाइंट JSON भेज सकता है:
ws.send(JSON.stringify({ username: 'अलीसा', text: 'सभी को नमस्ते!' }));