(Hinweis des Hauptentwicklers, leider habe ich nicht mehr zu viel Zeit, um mich dieser Bibliothek zu widmen. Vielleicht ist es Zeit, die Wartung an eine andere motivierter zu weitergeben?)
IxWebsocket ist eine C ++ - Bibliothek für WebSocket -Client- und Serverentwicklung. Es verfügt über minimale Abhängigkeiten (kein Boost), ist sehr einfach alles zu verwenden und zu unterstützen, was Sie wahrscheinlich für WebSocket -Entwickler (SSL, Deflatkomprimierung, Kompilieren auf den meisten Plattformen usw.). Der HTTP -Client- und Servercode ist ebenfalls verfügbar, hat jedoch nicht so viele Tests erhalten.
Es wird seit 2017 auf großen mobilen Videospieltiteln verwendet und empfangen. Es wurde auf MacOS, iOS, Linux, Android, Windows und FreeBSD getestet. Zwei wichtige Designziele sind Einfachheit und Korrektheit.
/*
* main.cpp
* Author: Benjamin Sergeant
* Copyright (c) 2020 Machine Zone, Inc. All rights reserved.
*
* Super simple standalone example. See ws folder, unittest and doc/usage.md for more.
*
* On macOS
* $ mkdir -p build ; (cd build ; cmake -DUSE_TLS=1 .. ; make -j ; make install)
* $ clang++ --std=c++11 --stdlib=libc++ main.cpp -lixwebsocket -lz -framework Security -framework Foundation
* $ ./a.out
*
* Or use cmake -DBUILD_DEMO=ON option for other platforms
*/
# include < ixwebsocket/IXNetSystem.h >
# include < ixwebsocket/IXWebSocket.h >
# include < ixwebsocket/IXUserAgent.h >
# include < iostream >
int main ()
{
// Required on Windows
ix::initNetSystem ();
// Our websocket object
ix::WebSocket webSocket;
// Connect to a server with encryption
// See https://machinezone.github.io/IXWebSocket/usage/#tls-support-and-configuration
// https://github.com/machinezone/IXWebSocket/issues/386#issuecomment-1105235227 (self signed certificates)
std::string url ( " wss://echo.websocket.org " );
webSocket. setUrl (url);
std::cout << " Connecting to " << url << " ... " << std::endl;
// Setup a callback to be fired (in a background thread, watch out for race conditions !)
// when a message or an event (open, close, error) is received
webSocket. setOnMessageCallback ([]( const ix::WebSocketMessagePtr& msg)
{
if (msg-> type == ix::WebSocketMessageType::Message)
{
std::cout << " received message: " << msg-> str << std::endl;
std::cout << " > " << std::flush;
}
else if (msg-> type == ix::WebSocketMessageType::Open)
{
std::cout << " Connection established " << std::endl;
std::cout << " > " << std::flush;
}
else if (msg-> type == ix::WebSocketMessageType::Error)
{
// Maybe SSL is not configured properly
std::cout << " Connection error: " << msg-> errorInfo . reason << std::endl;
std::cout << " > " << std::flush;
}
}
);
// Now that our callback is setup, we can start our background thread and receive messages
webSocket. start ();
// Send a message to the server (default to TEXT mode)
webSocket. send ( " hello world " );
// Display a prompt
std::cout << " > " << std::flush;
std::string text;
// Read text from the console and send messages in text mode.
// Exit with Ctrl-D on Unix or Ctrl-Z on Windows.
while ( std::getline (std::cin, text))
{
webSocket. send (text);
std::cout << " > " << std::flush;
}
return 0 ;
}Interessiert? Lesen Sie die Dokumente! Wenn die Dinge nicht wie erwartet funktionieren, erstellen Sie bitte ein Problem in GitHub oder noch besser eine Pull -Anfrage, wenn Sie wissen, wie Sie Ihr Problem beheben können.
IxWebsocket wird aktiv entwickelt. Schauen Sie sich den Changelog an, um zu wissen, was kocht. Wenn Sie nach einem Echtzeit-Messaging-Dienst suchen (der chat-ähnliche "Server" Ihr WebSocket-Code wird mit vielen Funktionen wie Historie, die von Redis unterstützt werden, besprechen, schauen Sie sich Cobra an.
IxWebsocket Client -Code ist Autobahn -konform, beginnend mit der Version 6.0.0. Siehe die aktuellen Testergebnisse. Einige Tests fehlen im Servercode immer noch.
Ab der 11.0.8 -Version sollte IxWebsocket vollständig C ++ 11 kompatibel sein.
Wenn Ihr Unternehmen oder Projekt diese Bibliothek nutzt, können Sie ein Problem oder eine PR eröffnen, um diese Liste zu ändern.
Es gibt viele großartige Websocket -Bibliotheken, die für Sie möglicherweise funktionieren. Hier sind ein paar ernsthafte.
UVWEB ist eine Bibliothek, die vom IxWebsocket -Autor geschrieben wurde und auf UVW aufgebaut ist, einem C ++ - Wrapper für Libuv. Es hat mehr Abhängigkeiten und unterstützt SSL zu diesem Zeitpunkt nicht, kann aber dank Libuv mehrere Verbindungen in einem einzelnen Betriebssystem -Thread geöffnet werden.
Um die Leistung einer WebSocket -Bibliothek zu überprüfen, können Sie sich das Autoroute -Projekt ansehen.
| Betriebssystem | Tls | Desinfektionsmittel | Status |
|---|---|---|---|
| Linux | OpenSSL | Keiner | |
| macos | Sichern Sie den Transport | Thread Desinfektionsmittel | |
| macos | OpenSSL | Thread Desinfektionsmittel | |
| macos | Mbedtls | Thread Desinfektionsmittel | |
| Fenster | Deaktiviert | Keiner | |
| UWP | Deaktiviert | Keiner | |
| Linux | OpenSSL | Adresse Desinfektionsmittel |