WebSocket लाइब्रेरी C++: पूर्ण अवलोकन और उपयोग के उदाहरण
\n\nWebSocket TCP के ऊपर एक फुल-डुप्लेक्स संचार प्रोटोकॉल है, जो क्लाइंट और सर्वर के बीच एक स्थायी कनेक्शन सुनिश्चित करता है। HTTP के विपरीत, WebSocket बार-बार अनुरोध किए बिना दोनों दिशाओं में संदेश भेजने की अनुमति देता है, जो चैट, ऑनलाइन गेम, स्टॉक कोटेशन और अन्य real-time अनुप्रयोगों के लिए आदर्श है।
\n\nC++ में WebSocket के साथ काम करने के लिए कई परिपक्व लाइब्रेरीज़ हैं। इस लेख में हम तीन सबसे लोकप्रिय विकल्पों पर विचार करेंगे: Boost.Beast, uWebSockets और libwebsockets। हम उनकी विशेषताओं, स्थापना का विश्लेषण करेंगे और कार्यशील कोड उदाहरण प्रस्तुत करेंगे।
\n\n1. Boost.Beast — शक्तिशाली और मानकीकृत
\n\nBoost.Beast Boost.Asio पर आधारित एक लाइब्रेरी है, जो HTTP और WebSocket प्रोटोकॉल को लागू करती है। यह Boost (संस्करण 1.66 से) का हिस्सा है और गंभीर C++ परियोजनाओं के लिए वास्तविक मानक है।
\n\nस्थापना
\n# Boost की स्थापना (Ubuntu/Debian)\nsudo apt install libboost-all-dev\n\n# या --with-beast विकल्प के साथ स्रोत से निर्माण\n\nWebSocket सर्वर का उदाहरण (इको सर्वर)
\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\nnamespace beast = boost::beast;\nnamespace websocket = beast::websocket;\nnamespace net = boost::asio;\nusing tcp = net::ip::tcp;\n\nint main() {\n try {\n net::io_context ioc;\n tcp::acceptor acceptor(ioc, tcp::endpoint(tcp::v4(), 8080));\n\n while (true) {\n tcp::socket socket{ioc};\n acceptor.accept(socket);\n\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 std::string msg = beast::buffers_to_string(buffer.data());\n std::cout << "प्राप्त: " << msg << std::endl;\n\n ws.text(ws.got_text());\n ws.write(buffer.data());\n }\n }\n } catch (const std::exception& e) {\n std::cerr << "त्रुटि: " << e.what() << std::endl;\n }\n return 0;\n}\n\nWebSocket क्लाइंट का उदाहरण
\n#include <boost/beast/core.hpp>\n#include <boost/beast/websocket.hpp>\n#include <boost/asio/connect.hpp>\n#include <iostream>\n\nnamespace beast = boost::beast;\nnamespace websocket = beast::websocket;\nnamespace net = boost::asio;\nusing tcp = net::ip::tcp;\n\nint main() {\n try {\n net::io_context ioc;\n tcp::resolver resolver{ioc};\n websocket::stream<tcp::socket> ws{ioc};\n\n auto const results = resolver.resolve("localhost", "8080");\n net::connect(ws.next_layer(), results.begin(), results.end());\n ws.handshake("localhost", "/");\n\n ws.write(net::buffer(std::string("नमस्ते, सर्वर!")));\n beast::flat_buffer buffer;\n ws.read(buffer);\n std::cout << "उत्तर: " << beast::buffers_to_string(buffer.data()) << std::endl;\n\n ws.close(websocket::close_code::normal);\n } catch (const std::exception& e) {\n std::cerr << "त्रुटि: " << e.what() << std::endl;\n }\n return 0;\n}\n\n2. uWebSockets — तेज़ और हल्का
\n\nuWebSockets (µWebSockets) C++11 में लिखी गई एक उच्च-प्रदर्शन लाइब्रेरी है। यह अपना स्वयं का event loop का उपयोग करती है और HTTP और WebSocket दोनों का समर्थन करती है। यह न्यूनतम मेमोरी खपत और उच्च गति प्रदर्शन के लिए जानी जाती है।
\n\nस्थापना
\ngit clone https://github.com/uNetworking/uWebSockets.git\ncd uWebSockets\nmake\nsudo make install\n\nइको सर्वर का उदाहरण
\n#include <uwebsoc