WebSocket-Bibliothek C++

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist WebSocket und wozu braucht man eine Bibliothek in C++?

WebSocket ist ein Kommunikationsprotokoll, das einen Vollduplex-Kanal über eine einzige TCP-Verbindung bereitstellt. Im Gegensatz zu HTTP ermöglicht es Server und Client, Daten in Echtzeit ohne ständige Anfragen auszutauschen. Für C++ gibt es mehrere Bibliotheken, die die Integration von WebSocket in Anwendungen vereinfachen. Eine der beliebtesten ist Boost.Beast (Teil der Boost C++ Libraries). Sie bietet eine Low-Level- und High-Level-API für die Arbeit mit WebSocket und HTTP.

Wie installiert man Boost.Beast?

Boost.Beast ist eine Header-Only-Bibliothek (bis Version 1.75) oder ein Teil von Boost, der eine Kompilierung erfordert. Installation:

# Ubuntu / Debiansudo apt install libboost-all-dev

# macOS (Homebrew)brew install boost

# Windows (vcpkg)vcpkg install boost-beast

Für den Header-Only-Modus reicht es, die Header-Dateien in das Projekt zu kopieren.

Hauptfunktionen der Bibliothek

  • WebSocket-Client und -Server — Unterstützung sowohl für Client- als auch für Serververbindungen.
  • Asynchrone Arbeit — Integration mit Boost.Asio für nicht-blockierende Ein-/Ausgabe.
  • SSL/TLS-Unterstützung — Gesicherte Verbindungen über Boost.Asio SSL.
  • Framing und Kontrollframes — Automatische Verarbeitung von Ping/Pong, Close.
  • HTTP-Upgrade — Integrierte Unterstützung für den Handshake von HTTP zu WebSocket.

Codebeispiel: Ein einfacher WebSocket-Server in C++

#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;}

Das Beispiel erstellt einen Server auf Port 8080, akzeptiert eine Verbindung, liest Nachrichten und sendet sie mit dem Präfix "Echo: " zurück.

Wann sollte man eine WebSocket-Bibliothek in C++ verwenden?

Die Bibliothek eignet sich für Projekte, bei denen Leistung und geringe Latenz wichtig sind: Chats, Online-Spiele, Finanzhandelssysteme, Echtzeit-Überwachung, IoT-Geräte. Wenn Sie ein zuverlässiges, plattformübergreifendes Tool mit einer aktiven Community benötigen, ist Boost.Beast die beste Wahl für C++.

Empfehlungen