C++ WebSocket लाइब्रेरी: रियल-टाइम अनुप्रयोगों के लिए आधुनिक उपकरण
WebSocket एक प्रोटोकॉल है जो क्लाइंट और सर्वर के बीच TCP के ऊपर एक स्थायी द्वि-दिशात्मक कनेक्शन प्रदान करता है। HTTP के विपरीत, यह लगातार अनुरोधों के बिना रियल-टाइम में डेटा स्थानांतरित करने की अनुमति देता है। C++ भाषा के लिए, WebSocket को लागू करने वाली कई शक्तिशाली लाइब्रेरीज़ मौजूद हैं। इस लेख में, हम तीन सबसे लोकप्रिय लाइब्रेरीज़ पर विचार करेंगे: Boost.Beast, uWebSockets और websocketpp, और उनके उपयोग के व्यावहारिक उदाहरण भी प्रस्तुत करेंगे।
C++ पर WebSocket लाइब्रेरी की आवश्यकता क्यों है?
शुरू से WebSocket विकसित करना एक जटिल कार्य है, जिसके लिए प्रोटोकॉल, कनेक्शन प्रबंधन और फ्रेम प्रसंस्करण की गहरी समझ की आवश्यकता होती है। तैयार लाइब्रेरीज़ निम्नलिखित प्रदान करती हैं:
- RFC 6455 प्रोटोकॉल का पूर्ण कार्यान्वयन
- SSL/TLS एन्क्रिप्शन का समर्थन
- एकाधिक कनेक्शनों का प्रबंधन
- खंडित संदेशों का प्रसंस्करण
- कनेक्शन जाँच के लिए ping/pong तंत्र
- उच्च प्रदर्शन के लिए अतुल्यकालिक आर्किटेक्चर
Boost.Beast — औद्योगिक मानक
Boost.Beast एक लाइब्रेरी है जो Boost.Asio पर आधारित है। यह HTTP और WebSocket प्रोटोकॉल का कार्यान्वयन प्रदान करती है। इसे C++ के लिए सबसे विश्वसनीय और प्रदर्शनकारी समाधान माना जाता है।
स्थापना:
# Ubuntu/Debian के लिए:sudo apt install libboost-all-dev
# या vcpkg के माध्यम से:vcpkg install boost-beastसरल WebSocket सर्वर का उदाहरण:
#include <boost/beast/core.hpp>#include <boost/beast/websocket.hpp>#include <boost/asio.hpp>#include <iostream>#include <string>
namespace beast = boost::beast;namespace websocket = beast::websocket;namespace net = boost::asio;using tcp = net::ip::tcp;
int main() { try { net::io_context ioc; tcp::acceptor acceptor(ioc, tcp::endpoint(tcp::v4(), 8080));
while (true) { tcp::socket socket(ioc); acceptor.accept(socket);
websocket::stream<tcp::socket> ws(std::move(socket)); ws.accept();
for (int i = 0; i < 5; ++i) { beast::flat_buffer buffer; ws.read(buffer); std::cout << "प्राप्त: " << beast::make_printable(buffer.data()) << std::endl;
std::string response = "सर्वर का उत्तर: " + std::to_string(i); ws.write(net::buffer(response)); } } } catch (std::exception const& e) { std::cerr << "त्रुटि: " << e.what() << std::endl; } return 0;}विशेषताएँ:
- Boost.Asio के साथ पूर्ण एकीकरण (अतुल्यकालिक संचालन)
- बॉक्स से बाहर SSL समर्थन
- अमूर्तता पर न्यूनतम ओवरहेड
- विस्तृत दस्तावेज़ीकरण और उदाहरण
- प्रोडक्शन प्रोजेक्ट्स में उपयोग (जैसे, कुछ गेम सर्वर में)
uWebSockets — हल्का और तेज़
uWebSockets एक लाइब्रेरी है जो C++17 में लिखी गई है और अधिकतम प्रदर्शन और न्यूनतम मेमोरी खपत पर केंद्रित है। यह HTTP और WebSocket दोनों का समर्थन करती है।
स्थापना:
git clone https://github.com/uNetworking/uWebSockets.gitcd uWebSocketsmakesudo make installWebSocket सर्वर का उदाहरण:
#include <uwebsockets/App.h>#include <iostream>
int main() { uWS::App() .ws("/*", { .open = [](auto* ws) { std::cout << "क्लाइंट जुड़ गया!" << std::endl; ws->send("स्वागत है!", uWS::OpCode::TEXT); }, .message = [