आउटपुट:

एक बार जब सर्वर चालू हो जाता है, और आप HTML फ़ाइल को कई ब्राउज़रों में खोलते हैं, तो एक ब्राउज़र में टाइप किए गए संदेश सर्वर पर भेजे जाएंगे और सभी कनेक्टेड क्लाइंट्स को प्रसारित किए जाएंगे।

Node.js स्ट्रीम

पूरी सामग्री को मेमोरी में लोड करने के बजाय बड़ी फ़ाइलों या डेटा को टुकड़ों में संभालने के लिए स्ट्रीम आवश्यक हैं। वे इसके लिए उपयोगी हैं:

Node.js में स्ट्रीम के प्रकार:

  1. पढ़ने योग्य स्ट्रीम: स्ट्रीम जिनसे डेटा पढ़ा जा सकता है (उदाहरण के लिए, फ़ाइल सिस्टम पढ़ा जाता है)।
  2. लिखने योग्य स्ट्रीम: स्ट्रीम जिसमें डेटा लिखा जा सकता है (जैसे, फ़ाइल सिस्टम लिखना)।
  3. डुप्लेक्स स्ट्रीम: ऐसी स्ट्रीम जिन्हें पढ़ा और लिखा दोनों जा सकता है (उदाहरण के लिए, टीसीपी सॉकेट)।
  4. ट्रांसफॉर्म स्ट्रीम्स: स्ट्रीम जो डेटा को लिखने और पढ़ने के दौरान संशोधित या परिवर्तित कर सकते हैं (उदाहरण के लिए, फ़ाइल संपीड़न)।

उदाहरण: स्ट्रीम का उपयोग करके फ़ाइल पढ़ना

const fs = require(\\'fs\\');// Create a readable streamconst readStream = fs.createReadStream(\\'largefile.txt\\', \\'utf8\\');// Listen to \\'data\\' event to read chunks of datareadStream.on(\\'data\\', (chunk) => {    console.log(\\'Reading chunk:\\', chunk);});// Listen to \\'end\\' event when the file is fully readreadStream.on(\\'end\\', () => {    console.log(\\'File reading complete\\');});

स्केलिंग Node.js अनुप्रयोग

जैसे-जैसे आपका एप्लिकेशन बढ़ता है, बढ़े हुए ट्रैफ़िक को संभालने और उच्च उपलब्धता सुनिश्चित करने के लिए स्केलिंग आवश्यक हो जाती है। Node.js अनुप्रयोगों को लंबवत या क्षैतिज रूप से स्केल किया जा सकता है:

Node.js में क्लस्टर मॉड्यूल

Node.js एक ही थ्रेड पर चलता है, लेकिन क्लस्टर मॉड्यूल का उपयोग करके, आप कई Node.js प्रक्रियाओं को चलाकर मल्टी-कोर सिस्टम का लाभ उठा सकते हैं।

const cluster = require(\\'cluster\\');const http = require(\\'http\\');const numCPUs = require(\\'os\\').cpus().length;if (cluster.isMaster) {    // Fork workers for each CPU    for (let i = 0; i < numCPUs; i  ) {        cluster.fork();    }    cluster.on(\\'exit\\', (worker, code, signal) => {        console.log(`Worker ${worker.process.pid} died`);    });} else {    // Workers can share the same HTTP server    http.createServer((req, res) => {        res.writeHead(200);        res.end(\\'Hello, world!\\\\n\\');    }).listen(8000);}

निष्कर्ष

WebSockets और Socket.IO आधुनिक वेब अनुप्रयोगों के लिए आवश्यक वास्तविक समय, द्वि-दिशात्मक संचार प्रदान करते हैं। Node.js स्ट्रीम बड़े पैमाने पर डेटा को कुशलतापूर्वक संभालती है, और NGINX और Node के क्लस्टर मॉड्यूल के साथ स्केलिंग सुनिश्चित करती है कि आपका एप्लिकेशन भारी ट्रैफ़िक का प्रबंधन कर सकता है। साथ में, ये प्रौद्योगिकियां मजबूत, उच्च-प्रदर्शन वाले वास्तविक समय अनुप्रयोगों को सक्षम बनाती हैं।

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

WebSockets, Socket.IO, और Node.js के साथ रीयल-टाइम संचार

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

WebSockets, Socket.IO, and Real-Time Communication with Node.js

वास्तविक समय संचार आधुनिक अनुप्रयोगों की एक प्रमुख विशेषता बन गया है, जो त्वरित अपडेट, लाइव डेटा विनिमय और उत्तरदायी उपयोगकर्ता अनुभवों को सक्षम बनाता है। WebSockets और Socket.IO जैसी प्रौद्योगिकियां वास्तविक समय की बातचीत में सबसे आगे हैं। यह लेख WebSockets की अवधारणाओं, उन्हें Node.js में कैसे लागू किया जाए, और Socket.IO वास्तविक समय संचार को कैसे सरल बनाता है, इस पर विस्तार से चर्चा करेगा।

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

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

मुख्य विशेषताएं:

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

वेबसॉकेट का उपयोग कब करें?

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

  • चैट एप्लिकेशन (जैसे, स्लैक, व्हाट्सएप वेब)
  • लाइव खेल अपडेट
  • शेयर बाजार फ़ीड
  • वास्तविक समय सहयोग उपकरण (उदाहरण के लिए, Google डॉक्स)

Node.js में WebSocket की स्थापना

Node.js मूल रूप से ws पैकेज के माध्यम से WebSocket का समर्थन करता है, जो WebSocket संचार के लिए एक हल्की और कुशल लाइब्रेरी है।

चरण 1: वेबसॉकेट पैकेज स्थापित करें

npm install ws

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

const WebSocket = require('ws');

// Create a WebSocket server that listens on port 8080
const wss = new WebSocket.Server({ port: 8080 });

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

    // When the server receives a message
    ws.on('message', (message) => {
        console.log('Received:', message);
        // Echo the message back to the client
        ws.send(`Server received: ${message}`);
    });

    // Handle connection close
    ws.on('close', () => {
        console.log('Client disconnected');
    });
});

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

स्पष्टीकरण:

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

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

const ws = new WebSocket('ws://localhost:8080');

ws.on('open', () => {
    console.log('Connected to WebSocket server');
    // Send a message to the server
    ws.send('Hello Server!');
});

ws.on('message', (data) => {
    console.log('Received from server:', data);
});

ws.on('close', () => {
    console.log('Disconnected from server');
});

आउटपुट:

Server Console:
Client connected
Received: Hello Server!
Client disconnected

Client Console:
Connected to WebSocket server
Received from server: Server received: Hello Server!
Disconnected from server

सॉकेट.आईओ क्या है?

Socket.IO वेबसॉकेट के शीर्ष पर बनी एक लोकप्रिय लाइब्रेरी है जो वास्तविक समय संचार को सरल बनाती है। यह एक उच्च-स्तरीय अमूर्तता प्रदान करता है, जिससे वास्तविक समय की घटनाओं को लागू करना और प्रबंधित करना आसान हो जाता है। Socket.IO व्यापक अनुकूलता सुनिश्चित करते हुए उन ब्राउज़रों के लिए फ़ॉलबैक तंत्र का भी समर्थन करता है जो WebSockets का समर्थन नहीं करते हैं।

सॉकेट.आईओ के लाभ:

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

Node.js के साथ 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, {
    cors: {
        origin: "*",
        methods: ["GET", "POST"]
    }
});

// Handle client connection
io.on('connection', (socket) => {
    console.log('Client connected:', socket.id);

    // Listen for 'chat' events from the client
    socket.on('chat', (message) => {
        console.log('Received message:', message);
        // Broadcast the message to all connected clients
        io.emit('chat', `Server: ${message}`);
    });

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

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

स्पष्टीकरण:

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

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



    
    Socket.IO Chat


    
    
    

    आउटपुट:

    एक बार जब सर्वर चालू हो जाता है, और आप HTML फ़ाइल को कई ब्राउज़रों में खोलते हैं, तो एक ब्राउज़र में टाइप किए गए संदेश सर्वर पर भेजे जाएंगे और सभी कनेक्टेड क्लाइंट्स को प्रसारित किए जाएंगे।

    Node.js स्ट्रीम

    पूरी सामग्री को मेमोरी में लोड करने के बजाय बड़ी फ़ाइलों या डेटा को टुकड़ों में संभालने के लिए स्ट्रीम आवश्यक हैं। वे इसके लिए उपयोगी हैं:

    • फ़ाइल अपलोड/डाउनलोड: स्ट्रीम आपको डेटा को अपलोड या डाउनलोड करते समय संसाधित करने की अनुमति देती है।
    • बड़े डेटा को संभालना: बड़ी फ़ाइलों या निरंतर डेटा को संभालने के लिए स्ट्रीम अधिक मेमोरी कुशल हैं।

    Node.js में स्ट्रीम के प्रकार:

    1. पढ़ने योग्य स्ट्रीम: स्ट्रीम जिनसे डेटा पढ़ा जा सकता है (उदाहरण के लिए, फ़ाइल सिस्टम पढ़ा जाता है)।
    2. लिखने योग्य स्ट्रीम: स्ट्रीम जिसमें डेटा लिखा जा सकता है (जैसे, फ़ाइल सिस्टम लिखना)।
    3. डुप्लेक्स स्ट्रीम: ऐसी स्ट्रीम जिन्हें पढ़ा और लिखा दोनों जा सकता है (उदाहरण के लिए, टीसीपी सॉकेट)।
    4. ट्रांसफॉर्म स्ट्रीम्स: स्ट्रीम जो डेटा को लिखने और पढ़ने के दौरान संशोधित या परिवर्तित कर सकते हैं (उदाहरण के लिए, फ़ाइल संपीड़न)।

    उदाहरण: स्ट्रीम का उपयोग करके फ़ाइल पढ़ना

    const fs = require('fs');
    
    // Create a readable stream
    const readStream = fs.createReadStream('largefile.txt', 'utf8');
    
    // Listen to 'data' event to read chunks of data
    readStream.on('data', (chunk) => {
        console.log('Reading chunk:', chunk);
    });
    
    // Listen to 'end' event when the file is fully read
    readStream.on('end', () => {
        console.log('File reading complete');
    });
    

    स्केलिंग Node.js अनुप्रयोग

    जैसे-जैसे आपका एप्लिकेशन बढ़ता है, बढ़े हुए ट्रैफ़िक को संभालने और उच्च उपलब्धता सुनिश्चित करने के लिए स्केलिंग आवश्यक हो जाती है। Node.js अनुप्रयोगों को लंबवत या क्षैतिज रूप से स्केल किया जा सकता है:

    • वर्टिकल स्केलिंग: एक मशीन के संसाधन (सीपीयू, रैम) बढ़ाना।
    • क्षैतिज स्केलिंग: विभिन्न मशीनों या कोर में आपके Node.js एप्लिकेशन के कई उदाहरण चलाना।

    Node.js में क्लस्टर मॉड्यूल

    Node.js एक ही थ्रेड पर चलता है, लेकिन क्लस्टर मॉड्यूल का उपयोग करके, आप कई Node.js प्रक्रियाओं को चलाकर मल्टी-कोर सिस्टम का लाभ उठा सकते हैं।

    const cluster = require('cluster');
    const http = require('http');
    const numCPUs = require('os').cpus().length;
    
    if (cluster.isMaster) {
        // Fork workers for each CPU
        for (let i = 0; i  {
            console.log(`Worker ${worker.process.pid} died`);
        });
    } else {
        // Workers can share the same HTTP server
        http.createServer((req, res) => {
            res.writeHead(200);
            res.end('Hello, world!\n');
        }).listen(8000);
    }
    

    निष्कर्ष

    WebSockets और Socket.IO आधुनिक वेब अनुप्रयोगों के लिए आवश्यक वास्तविक समय, द्वि-दिशात्मक संचार प्रदान करते हैं। Node.js स्ट्रीम बड़े पैमाने पर डेटा को कुशलतापूर्वक संभालती है, और NGINX और Node के क्लस्टर मॉड्यूल के साथ स्केलिंग सुनिश्चित करती है कि आपका एप्लिकेशन भारी ट्रैफ़िक का प्रबंधन कर सकता है। साथ में, ये प्रौद्योगिकियां मजबूत, उच्च-प्रदर्शन वाले वास्तविक समय अनुप्रयोगों को सक्षम बनाती हैं।

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

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

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

    Copyright© 2022 湘ICP备2022001581号-3