आउटपुट:

  1. क्लाइंट लॉग:
   Connected to WebSocket server   Message from server: Hello, you sent -> Hello from client
  1. सर्वर लॉग:
   Client connected   Received: Hello from client

सॉकेट.आईओ: सरलीकृत वेबसॉकेट

हालांकि वेबसॉकेट शक्तिशाली हैं, उन्हें पुन: कनेक्शन, प्रसारण और फ़ॉलबैक (जैसे, लंबे मतदान) को प्रबंधित करने जैसी घटनाओं को संभालने के लिए कुछ मैन्युअल काम की आवश्यकता होती है। Socket.IO जैसी सुविधाएं प्रदान करके वास्तविक समय संचार को सरल बनाता है:

चरण 1: सॉकेट.आईओ स्थापित करना

npm install socket.io

चरण 2: सॉकेट.आईओ सर्वर बनाना

const http = require(\\'http\\');const socketio = require(\\'socket.io\\');// Create an HTTP serverconst server = http.createServer();const io = socketio(server);io.on(\\'connection\\', (socket) => {    console.log(\\'Client connected\\');    // Listen for messages from the client    socket.on(\\'message\\', (msg) => {        console.log(\\'Received message:\\', msg);        socket.emit(\\'message\\', `Server received: ${msg}`);    });    // On client disconnect    socket.on(\\'disconnect\\', () => {        console.log(\\'Client disconnected\\');    });});server.listen(3000, () => {    console.log(\\'Socket.IO server running on http://localhost:3000\\');});

यहाँ:

चरण 3: सॉकेट.आईओ क्लाइंट बनाना

            Socket.IO Client    

Socket.IO Example

इस उदाहरण में, सॉकेट.आईओ क्लाइंट स्वचालित रूप से सर्वर से कनेक्शन संभालता है और द्विदिश संचार की अनुमति देता है।

आउटपुट:

  1. क्लाइंट लॉग:
   Connected to server   Message from server: Server received: Hello from client
  1. सर्वर लॉग:
   Client connected   Received message: Hello from client

WebSockets और Socket.IO के लिए केस का उपयोग करें

4.1 रीयल-टाइम चैट एप्लिकेशन

समस्या: एक मैसेजिंग प्लेटफॉर्म को उपयोगकर्ताओं के बीच वास्तविक समय संचार सक्षम करने की आवश्यकता होती है।

समाधान: वेबसॉकेट (या सॉकेट.आईओ) एक इवेंट-संचालित, लगातार कनेक्शन प्रदान करता है, जो उपयोगकर्ताओं को बिना किसी देरी के वास्तविक समय में संदेश भेजने और प्राप्त करने की अनुमति देता है।

4.2 वास्तविक समय सहयोगात्मक दस्तावेज़ संपादन

समस्या: दस्तावेज़ पर सहयोग करने वाले उपयोगकर्ताओं को दूसरों द्वारा किए गए परिवर्तनों को तुरंत देखने की आवश्यकता है।

समाधान: वेबसॉकेट का उपयोग करके, परिवर्तन वास्तविक समय में सभी ग्राहकों तक पहुंचाए जाते हैं, यह सुनिश्चित करते हुए कि दस्तावेज़ सभी उपयोगकर्ताओं के बीच सिंक्रनाइज़ रहता है।

4.3 वेब अनुप्रयोगों में अधिसूचनाएँ

समस्या: एक वेब एप्लिकेशन को नए संदेशों, अपडेट या अलर्ट जैसी घटनाओं के बारे में उपयोगकर्ताओं को सूचित करने की आवश्यकता होती है।

समाधान: वेबसॉकेट सर्वर को घटनाओं के घटित होते ही क्लाइंट को सूचनाएं भेजने की अनुमति देता है, जिससे उपयोगकर्ता जुड़ाव में सुधार होता है।

स्केलिंग वेबसॉकेट और सॉकेट.आईओ

WebSockets और Socket.IO को स्केल करना उनकी लगातार प्रकृति के कारण चुनौतीपूर्ण है। प्रत्येक वेबसॉकेट कनेक्शन एक लंबे समय तक चलने वाला टीसीपी कनेक्शन है, जो कनेक्शन की संख्या बढ़ने पर संसाधन-गहन हो सकता है।

स्केलिंग के लिए सामान्य रणनीतियाँ:

  1. क्षैतिज स्केलिंग: कई सर्वरों पर वेबसॉकेट ट्रैफ़िक को संतुलित करते हुए लोड करें।
  2. स्टिकी सत्र: यह सुनिश्चित करना कि क्लाइंट से सभी वेबसॉकेट कनेक्शन एक ही सर्वर पर रूट किए गए हैं।
  3. पब/सब के लिए रेडिस: सर्वरों पर इवेंट प्रकाशन और सदस्यता के लिए रेडिस का उपयोग करना, यह सुनिश्चित करना कि सभी क्लाइंट वास्तविक समय में अपडेट प्राप्त करें।
npm install socket.io-redis

रेडिस का उपयोग करने के लिए सॉकेट.आईओ को कॉन्फ़िगर करने का एक उदाहरण यहां दिया गया है:

const io = require(\\'socket.io\\')(server);const redisAdapter = require(\\'socket.io-redis\\');io.adapter(redisAdapter({ host: \\'localhost\\', port: 6379 }));

निष्कर्ष

WebSockets और Socket.IO आधुनिक वेब अनुप्रयोगों में वास्तविक समय संचार के लिए आवश्यक प्रौद्योगिकियां हैं। जबकि WebSockets पूर्ण-डुप्लेक्स संचार के लिए निम्न-स्तरीय प्रोटोकॉल प्रदान करता है, Socket.IO कार्यान्वयन को सरल बनाता है, स्वचालित पुन: कनेक्शन और प्रसारण जैसी अतिरिक्त सुविधाएँ प्रदान करता है। दोनों तकनीकों में चैट एप्लिकेशन से लेकर सहयोगी टूल तक महत्वपूर्ण वास्तविक दुनिया के अनुप्रयोग हैं।

अगले लेख में, हम Node.js Streams में उतरेंगे और पता लगाएंगे कि स्केलेबिलिटी और प्रदर्शन पर ध्यान केंद्रित करते हुए वे बड़े डेटा को कुशलतापूर्वक कैसे संभालते हैं।

","image":"http://www.luping.net/uploads/20241017/17291584876710dd57bf9e9.jpg","datePublished":"2024-11-08T16:58:22+08:00","dateModified":"2024-11-08T16:58:22+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Node.js में WebSockets और Socket.IO के साथ वास्तविक समय संचार

Node.js में WebSockets और Socket.IO के साथ वास्तविक समय संचार

2024-11-08 को प्रकाशित
ब्राउज़ करें:866

Real-time communication with WebSockets and Socket.IO in Node.js

आधुनिक वेब अनुप्रयोगों को अक्सर वास्तविक समय संचार की आवश्यकता होती है, चाहे चैट सिस्टम, लाइव अपडेट, सहयोगी संपादन, या सूचनाओं के लिए। पारंपरिक HTTP संचार वास्तविक समय के अनुप्रयोगों के लिए अपर्याप्त है क्योंकि यह अनुरोध-प्रतिक्रिया पैटर्न पर निर्भर करता है। यह वह जगह है जहां वेबसॉकेट काम में आती है, जो सर्वर और क्लाइंट के बीच पूर्ण-डुप्लेक्स संचार की अनुमति देती है।

इस लेख में, हम पता लगाएंगे:

  1. वेबसॉकेट क्या हैं, और वे वास्तविक समय के अनुप्रयोगों के लिए क्यों आवश्यक हैं।
  2. नोड.जेएस में वेबसॉकेट कैसे लागू करें।
  3. WebSocket कार्यान्वयन को सरल बनाने के लिए Socket.IO का उपयोग करना।
  4. वास्तविक दुनिया में उपयोग के मामलों के उदाहरण।

वेबसॉकेट क्या हैं?

वेबसॉकेट एक प्रोटोकॉल है जो एकल टीसीपी कनेक्शन पर पूर्ण-डुप्लेक्स संचार चैनल प्रदान करता है। पारंपरिक HTTP अनुरोधों के विपरीत, जो अनुरोध-प्रतिक्रिया-आधारित होते हैं और लगातार नए कनेक्शन स्थापित करने में ओवरहेड होते हैं, वेबसॉकेट लगातार संचार की अनुमति देते हैं।

प्रमुख विशेषताऐं:

  • पूर्ण-डुप्लेक्स संचार: क्लाइंट और सर्वर दोनों एक-दूसरे की प्रतीक्षा किए बिना किसी भी समय संदेश भेज सकते हैं।
  • कम विलंबता: वेबसॉकेट कनेक्शन को लगातार खोलने और बंद करने की आवश्यकता को समाप्त करता है, विलंबता को कम करता है और वास्तविक समय के ऐप्स के प्रदर्शन में सुधार करता है।
  • इवेंट-संचालित: दोनों पक्ष डेटा को पुश कर सकते हैं, जिससे यह चैट, गेमिंग या रीयल-टाइम नोटिफिकेशन जैसे गतिशील अनुप्रयोगों के लिए आदर्श बन जाता है।

Node.js में WebSockets लागू करना

चरण 1: डब्ल्यूएस वेबसॉकेट लाइब्रेरी स्थापित करना

Node.js में, WebSockets बिल्ट-इन नहीं हैं, इसलिए हमें एक लाइब्रेरी की आवश्यकता है। Node.js के लिए सबसे लोकप्रिय WebSocket लाइब्रेरीज़ में से एक ws है।

npm install ws

चरण 2: एक वेबसॉकेट सर्वर बनाना

यहां डब्ल्यूएस लाइब्रेरी का उपयोग करने वाला एक सरल वेबसॉकेट सर्वर है:

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
    console.log('Client connected');

    // Listen for messages from the client
    ws.on('message', (message) => {
        console.log('Received:', message);
        // Respond to the client
        ws.send(`Hello, you sent -> ${message}`);
    });

    // On client disconnect
    ws.on('close', () => {
        console.log('Client disconnected');
    });
});

console.log('WebSocket server running on ws://localhost:8080');

इस उदाहरण में:

  • हम पोर्ट 8080 पर एक वेबसॉकेट सर्वर बनाते हैं।
  • जब कोई क्लाइंट कनेक्ट होता है, तो कनेक्शन ईवेंट ट्रिगर हो जाता है।
  • सर्वर क्लाइंट के संदेशों को सुनता है और एक पुष्टिकरण संदेश के साथ प्रतिक्रिया देता है।
  • यदि क्लाइंट डिस्कनेक्ट हो जाता है, तो हम एक संदेश लॉग करते हैं।

चरण 3: एक वेबसॉकेट क्लाइंट बनाना

आप ब्राउज़र में जावास्क्रिप्ट का उपयोग करके एक वेबसॉकेट क्लाइंट बना सकते हैं:



    
    
    WebSocket Client


    

WebSocket Example

  • जब वेबसॉकेट कनेक्शन खुलता है, तो क्लाइंट एक सफलता संदेश लॉग करता है।
  • बटन क्लिक करने पर सर्वर को एक संदेश भेजा जाता है, और सर्वर की प्रतिक्रिया प्रदर्शित होती है।

आउटपुट:

  1. क्लाइंट लॉग:
   Connected to WebSocket server
   Message from server: Hello, you sent -> Hello from client
  1. सर्वर लॉग:
   Client connected
   Received: Hello from client

सॉकेट.आईओ: सरलीकृत वेबसॉकेट

हालांकि वेबसॉकेट शक्तिशाली हैं, उन्हें पुन: कनेक्शन, प्रसारण और फ़ॉलबैक (जैसे, लंबे मतदान) को प्रबंधित करने जैसी घटनाओं को संभालने के लिए कुछ मैन्युअल काम की आवश्यकता होती है। Socket.IO जैसी सुविधाएं प्रदान करके वास्तविक समय संचार को सरल बनाता है:

  • स्वचालित पुनः कनेक्शन।
  • कई ग्राहकों के लिए कार्यक्रम प्रसारित करना।
  • यदि वेबसॉकेट समर्थित नहीं है तो मतदान पर वापस जाएं।

चरण 1: सॉकेट.आईओ स्थापित करना

npm install socket.io

चरण 2: सॉकेट.आईओ सर्वर बनाना

const http = require('http');
const socketio = require('socket.io');

// Create an HTTP server
const server = http.createServer();
const io = socketio(server);

io.on('connection', (socket) => {
    console.log('Client connected');

    // Listen for messages from the client
    socket.on('message', (msg) => {
        console.log('Received message:', msg);
        socket.emit('message', `Server received: ${msg}`);
    });

    // On client disconnect
    socket.on('disconnect', () => {
        console.log('Client disconnected');
    });
});

server.listen(3000, () => {
    console.log('Socket.IO server running on http://localhost:3000');
});

यहाँ:

  • हम Socket.IO का उपयोग करके एक सर्वर बनाते हैं जो कनेक्शन और आने वाले संदेशों को सुनता है।
  • सॉकेट.एमिट का उपयोग क्लाइंट को संदेश वापस भेजने के लिए किया जाता है।

चरण 3: सॉकेट.आईओ क्लाइंट बनाना



    
    
    Socket.IO Client


    

Socket.IO Example

इस उदाहरण में, सॉकेट.आईओ क्लाइंट स्वचालित रूप से सर्वर से कनेक्शन संभालता है और द्विदिश संचार की अनुमति देता है।

आउटपुट:

  1. क्लाइंट लॉग:
   Connected to server
   Message from server: Server received: Hello from client
  1. सर्वर लॉग:
   Client connected
   Received message: Hello from client

WebSockets और Socket.IO के लिए केस का उपयोग करें

4.1 रीयल-टाइम चैट एप्लिकेशन

समस्या: एक मैसेजिंग प्लेटफॉर्म को उपयोगकर्ताओं के बीच वास्तविक समय संचार सक्षम करने की आवश्यकता होती है।

समाधान: वेबसॉकेट (या सॉकेट.आईओ) एक इवेंट-संचालित, लगातार कनेक्शन प्रदान करता है, जो उपयोगकर्ताओं को बिना किसी देरी के वास्तविक समय में संदेश भेजने और प्राप्त करने की अनुमति देता है।

4.2 वास्तविक समय सहयोगात्मक दस्तावेज़ संपादन

समस्या: दस्तावेज़ पर सहयोग करने वाले उपयोगकर्ताओं को दूसरों द्वारा किए गए परिवर्तनों को तुरंत देखने की आवश्यकता है।

समाधान: वेबसॉकेट का उपयोग करके, परिवर्तन वास्तविक समय में सभी ग्राहकों तक पहुंचाए जाते हैं, यह सुनिश्चित करते हुए कि दस्तावेज़ सभी उपयोगकर्ताओं के बीच सिंक्रनाइज़ रहता है।

4.3 वेब अनुप्रयोगों में अधिसूचनाएँ

समस्या: एक वेब एप्लिकेशन को नए संदेशों, अपडेट या अलर्ट जैसी घटनाओं के बारे में उपयोगकर्ताओं को सूचित करने की आवश्यकता होती है।

समाधान: वेबसॉकेट सर्वर को घटनाओं के घटित होते ही क्लाइंट को सूचनाएं भेजने की अनुमति देता है, जिससे उपयोगकर्ता जुड़ाव में सुधार होता है।

स्केलिंग वेबसॉकेट और सॉकेट.आईओ

WebSockets और Socket.IO को स्केल करना उनकी लगातार प्रकृति के कारण चुनौतीपूर्ण है। प्रत्येक वेबसॉकेट कनेक्शन एक लंबे समय तक चलने वाला टीसीपी कनेक्शन है, जो कनेक्शन की संख्या बढ़ने पर संसाधन-गहन हो सकता है।

स्केलिंग के लिए सामान्य रणनीतियाँ:

  1. क्षैतिज स्केलिंग: कई सर्वरों पर वेबसॉकेट ट्रैफ़िक को संतुलित करते हुए लोड करें।
  2. स्टिकी सत्र: यह सुनिश्चित करना कि क्लाइंट से सभी वेबसॉकेट कनेक्शन एक ही सर्वर पर रूट किए गए हैं।
  3. पब/सब के लिए रेडिस: सर्वरों पर इवेंट प्रकाशन और सदस्यता के लिए रेडिस का उपयोग करना, यह सुनिश्चित करना कि सभी क्लाइंट वास्तविक समय में अपडेट प्राप्त करें।
npm install socket.io-redis

रेडिस का उपयोग करने के लिए सॉकेट.आईओ को कॉन्फ़िगर करने का एक उदाहरण यहां दिया गया है:

const io = require('socket.io')(server);
const redisAdapter = require('socket.io-redis');
io.adapter(redisAdapter({ host: 'localhost', port: 6379 }));

निष्कर्ष

WebSockets और Socket.IO आधुनिक वेब अनुप्रयोगों में वास्तविक समय संचार के लिए आवश्यक प्रौद्योगिकियां हैं। जबकि WebSockets पूर्ण-डुप्लेक्स संचार के लिए निम्न-स्तरीय प्रोटोकॉल प्रदान करता है, Socket.IO कार्यान्वयन को सरल बनाता है, स्वचालित पुन: कनेक्शन और प्रसारण जैसी अतिरिक्त सुविधाएँ प्रदान करता है। दोनों तकनीकों में चैट एप्लिकेशन से लेकर सहयोगी टूल तक महत्वपूर्ण वास्तविक दुनिया के अनुप्रयोग हैं।

अगले लेख में, हम Node.js Streams में उतरेंगे और पता लगाएंगे कि स्केलेबिलिटी और प्रदर्शन पर ध्यान केंद्रित करते हुए वे बड़े डेटा को कुशलतापूर्वक कैसे संभालते हैं।

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/imsushant12/real-time- communication-with-websockets-and-socketio-in-nodejs-4p8e?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163.com पर संपर्क करें। इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3