2015-12-22 11 views
6

Desidero accedere a un'API WebSocket utilizzando C++ su Linux. Ho visto librerie diverse (come libwebsockets o websocketpp), ma non sono sicuro di quale dovrebbe essere utile. L'unica cosa che devo fare è connettersi all'API e ricevere i dati in una stringa. Quindi sto cercando uno semplice semplice e una soluzione semplice, niente di troppo complesso. Forse qualcuno ha già fatto esperienza con una libreria WebSocket?Libreria WebSocket

risposta

9

Per un'API di livello superiore, è possibile utilizzare ws_client dalla libreria cpprest {la fascia websocketpp}.

un'applicazione di esempio che corre contro il echo server:

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

Qui .wait() metodo viene utilizzato per attendere sui compiti, ma il codice può essere facilmente modificato per fare I/O in modo asincrono.

+0

Grazie! Supporta anche la sottoscrizione a un canale? – Bobface

+0

E inoltre, dice ** Progetto Microsoft ** sulla loro pagina. Quindi non funzionerà probabilmente sui sistemi Linux? – Bobface

+2

È abbastanza solido e funziona su Windows, OS X, iOS e ** Linux (incluso Android) **. In effetti, ho codificato ed eseguito questo esempio su Ubuntu 15.10. –