WebSocket क्या है और C++ के लिए लाइब्रेरी की आवश्यकता क्यों है?
WebSocket एक संचार प्रोटोकॉल है जो एकल TCP कनेक्शन पर फुल-डुप्लेक्स चैनल प्रदान करता है। HTTP के विपरीत, यह सर्वर और क्लाइंट को बिना लगातार अनुरोधों के रीयल-टाइम में डेटा का आदान-प्रदान करने की अनुमति देता है। C++ के लिए कई लाइब्रेरी हैं जो एप्लिकेशन में WebSocket को एकीकृत करना आसान बनाती हैं। सबसे लोकप्रिय में से एक Boost.Beast (Boost C++ Libraries का हिस्सा) है। यह WebSocket और HTTP के साथ काम करने के लिए निम्न-स्तरीय और उच्च-स्तरीय API प्रदान करता है।
Boost.Beast कैसे स्थापित करें?
Boost.Beast एक header-only लाइब्रेरी (संस्करण 1.75 तक) या Boost का हिस्सा है जिसे बिल्ड करने की आवश्यकता होती है। स्थापना:
# Ubuntu / Debiansudo apt install libboost-all-dev
# macOS (Homebrew)brew install boost
# Windows (vcpkg)vcpkg install boost-beastheader-only मोड के लिए, प्रोजेक्ट में हेडर फ़ाइलों को कॉपी करना पर्याप्त है।
लाइब्रेरी के मुख्य कार्य
- WebSocket क्लाइंट और सर्वर — क्लाइंट और सर्वर दोनों कनेक्शनों के लिए समर्थन।
- असिंक्रोनस कार्य — नॉन-ब्लॉकिंग इनपुट/आउटपुट के लिए Boost.Asio के साथ एकीकरण।
- SSL/TLS समर्थन — Boost.Asio SSL के माध्यम से सुरक्षित कनेक्शन।
- फ्रेमिंग और नियंत्रण फ्रेम — ping/pong, close का स्वचालित प्रसंस्करण।
- HTTP upgrade — HTTP से WebSocket में handshake के लिए अंतर्निहित समर्थन।
कोड उदाहरण: C++ में एक सरल WebSocket सर्वर
#include <boost/beast/core.hpp>#include <boost/beast/websocket.hpp>#include <boost/asio/ip/tcp.hpp>#include <iostream>#include <string>
namespace beast = boost::beast;namespace http = beast::http;namespace websocket = beast::websocket;namespace net = boost::asio;using tcp = net::ip::tcp;
int main() { try { net::io_context ioc{1}; tcp::acceptor acceptor{ioc, {tcp::v4(), 8080}}; tcp::socket socket{ioc}; acceptor.accept(socket);
websocket::stream<tcp::socket> ws{std::move(socket)}; ws.accept();
for(;;) { beast::flat_buffer buffer; ws.read(buffer); std::string message = beast::buffers_to_string(buffer.data()); std::cout << "Received: " << message << std::endl; ws.write(beast::buffer("Echo: " + message)); } } catch(std::exception const& e) { std::cerr << "Error: " << e.what() << std::endl; return 1; } return 0;}यह उदाहरण पोर्ट 8080 पर एक सर्वर बनाता है, एक कनेक्शन स्वीकार करता है, संदेश पढ़ता है और उन्हें "Echo: " उपसर्ग के साथ वापस भेजता है।
C++ WebSocket लाइब्रेरी का उपयोग कब करें?
यह लाइब्रेरी उन प्रोजेक्ट्स के लिए उपयुक्त है जहाँ प्रदर्शन और कम विलंबता महत्वपूर्ण है: चैट, ऑनलाइन गेम, वित्तीय ट्रेडिंग सिस्टम, रीयल-टाइम मॉनिटरिंग, IoT उपकरण। यदि आपको एक विश्वसनीय, क्रॉस-प्लेटफ़ॉर्म टूल चाहिए जिसमें सक्रिय समुदाय हो, तो Boost.Beast C++ के लिए सबसे अच्छा विकल्प है।