C++ पर WebSocket: रियल-टाइम एप्लिकेशन A से Z तक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C++ पर WebSocket: रियल-टाइम एप्लिकेशन A से Z तक

\n\n

आधुनिक वेब प्रौद्योगिकी की दुनिया में, उपयोगकर्ता एप्लिकेशन से तत्काल प्रतिक्रिया की उम्मीद करते हैं। पारंपरिक HTTP प्रोटोकॉल, जो "अनुरोध-प्रतिक्रिया" मॉडल पर काम करता है, उन कार्यों के लिए उपयुक्त नहीं है जिनमें डेटा के निरंतर अपडेट की आवश्यकता होती है: ऑनलाइन चैट, शेयर बाजार के कोटेशन, मल्टीप्लेयर गेम और मॉनिटरिंग सिस्टम। यहीं पर WebSocket मदद करता है — एक प्रोटोकॉल जो क्लाइंट और सर्वर के बीच स्थायी द्विदिश कनेक्शन प्रदान करता है।

\n\n

इस लेख में, हम देखेंगे कि C++ पर WebSocket का उपयोग करके रियल-टाइम एप्लिकेशन कैसे बनाएं। आप लाइब्रेरी, आर्किटेक्चर के बारे में जानेंगे और अपना पहला कार्यशील कोड लिखेंगे।

\n\n

WebSocket क्या है और C++ में इसकी आवश्यकता क्यों है?

\n\n

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

\n\n

C++ उच्च-प्रदर्शन रियल-टाइम सिस्टम के लिए एक आदर्श भाषा है। यह मेमोरी, थ्रेड और नेटवर्क संचालन पर पूर्ण नियंत्रण देता है। WebSocket के साथ मिलकर, आपको मिलता है:

\n\n
    \n
  • न्यूनतम विलंबता — डेटा मिलीसेकंड में वितरित होता है।
  • \n
  • उच्च थ्रूपुट — हजारों समवर्ती कनेक्शन।
  • \n
  • ऊर्जा दक्षता — सर्वर संसाधनों की कम खपत।
  • \n
\n\n

उपयोग के उदाहरण: शेयर बाजार टर्मिनल, ऑनलाइन गेम (जैसे, रियल-टाइम शतरंज), सूचना प्रणाली, IoT उपकरण और यहां तक कि सेंसर से डेटा स्ट्रीमिंग।

\n\n

लाइब्रेरी का चयन: Boost.Beast बनाम uWebSockets

\n\n

C++ में WebSocket के साथ काम करने के लिए कई लोकप्रिय लाइब्रेरी हैं। हम दो मुख्य पर विचार करेंगे:

\n\n

Boost.Beast

\n

यह Boost इकोसिस्टम का हिस्सा है, जो आधुनिक C++11/14/17 में लिखा गया है। Beast WebSocket और HTTP पर निम्न-स्तरीय नियंत्रण प्रदान करता है। यह एसिंक्रोनस है, Boost.Asio पर आधारित है और गंभीर परियोजनाओं के लिए आदर्श है।

\n\n

uWebSockets (µWebSockets)

\n

एक हल्की और अत्यंत तेज़ लाइब्रेरी। C++17 में लिखी गई, अधिकतम प्रदर्शन पर केंद्रित। माइक्रोसर्विस और सरल रियल-टाइम एप्लिकेशन के लिए आदर्श।

\n\n

इस गाइड के लिए हम Boost.Beast चुनेंगे, क्योंकि यह अधिक लचीला है और शैक्षिक उद्देश्यों के लिए बेहतर दस्तावेजीकृत है।

\n\n

Boost.Beast के साथ C++ पर WebSocket सर्वर लिखना

\n\n

आइए एक सरल इको सर्वर बनाएं जो क्लाइंट से संदेश प्राप्त करता है और उन्हें वापस भेजता है। यह किसी भी रियल-टाइम एप्लिकेशन का आधार है।

\n\n

शुरू करने के लिए, Boost.Beast और Asio स्थापित करें। अधिकांश Linux वितरणों में, यह पैकेज मैनेजर के माध्यम से किया जाता है:

\n\n
sudo apt install libboost-all-dev
\n\n

अब सर्वर कोड:

\n\n
#include <boost/beast/core.hpp>\n#include <boost/beast/websocket.hpp>\n#include <boost/asio/ip/tcp.hpp>\n#include <iostream>\n#include <string>\n#include <thread>\n\nnamespace beast = boost::beast;\nnamespace websocket = beast::websocket;\nnamespace net = boost::asio;\nusing tcp = net::ip::tcp;\n\nvoid do_session(tcp::socket&& socket) {\n    try {\n        websocket::stream<tcp::socket> ws{std::move(socket)};\n        ws.accept();\n\n        for (;;) {\n            beast::flat_buffer buffer;\n            ws.read(buffer);\n            auto msg = beast::buffers_to_string(buffer.data());\n            std::cout << "Received: " << msg << std::endl;\n\n            // इको प्रतिक्रिया\n            ws.text(ws.got_text());\n            ws.write(buffer.data());\n        }\n    } catch (beast::system_error const& se) {\n        if (se.code() != websocket::error::closed) {\n            std::cerr << "Error: " << se.code().message() << std::endl;\n        }\n    }\n}\n\nint main() {\n    try {\n                

ब्लॉग

पुस्तक अनुशंसाएँ