2015-12-22 8 views
6

Ich möchte mit C++ unter Linux auf eine WebSocket-API zugreifen. Ich habe verschiedene Librarys (wie libwebsockets oder websocketpp) gesehen, aber ich bin mir nicht sicher, was ich verwenden sollte. Das einzige, was ich tun muss, ist Verbindung mit der API und empfangen Daten zu einer Zeichenfolge. Also ich bin auf der Suche nach einem sehr grundlegenden und einfache Lösung, nichts zu komplex. Vielleicht hat jemand bereits Erfahrungen mit einer WebSocket-Bibliothek gemacht?WebSocket-Bibliothek

Antwort

9

Für eine High-Level-API können Sie ws_client aus der Bibliothek cpprest {it wraps websocketpp} verwenden.

Eine Beispielanwendung, die die echo server läuft gegen:

#include <iostream> 
#include <cpprest/ws_client.h> 

using namespace std; 
using namespace web; 
using namespace web::websockets::client; 

int main() { 
    websocket_client client; 
    client.connect("ws://echo.websocket.org").wait(); 

    websocket_outgoing_message out_msg; 
    out_msg.set_utf8_message("test"); 
    client.send(out_msg).wait(); 

    client.receive().then([](websocket_incoming_message in_msg) { 
    return in_msg.extract_string(); 
    }).then([](string body) { 
    cout << body << endl; // test 
    }).wait(); 

    client.close().wait(); 

    return 0; 
} 

Hier .wait() Verfahren verwendet wird, sich auf Aufgaben zu warten, aber der Code leicht modifiziert werden kann I/O in der asynchronen Art und Weise zu tun.

+0

Vielen Dank! Unterstützt es auch das Abonnieren eines Kanals? – Bobface

+0

Und es heißt auch ** Microsoft-Projekt ** auf ihrer Seite. Also wird es wahrscheinlich nicht auf Linux-Systemen funktionieren? – Bobface

+2

Es ist ziemlich solide und läuft auf Windows, OS X, iOS und ** Linux (einschließlich Android) **. In der Tat habe ich dieses Beispiel auf Ubuntu 15.10 programmiert. –