2015-12-22 27 views
6

Chcę uzyskać dostęp do interfejsu API WebSocket przy użyciu C++ w systemie Linux. Widziałem różne biblioteki (takie jak libwebsockets lub websocketpp), ale nie jestem pewien, który powinienem użyć. Jedyne, co muszę zrobić, to: połączyć się z API i odbierać dane na ciąg znaków. Tak więc szukam bardzo prostego rozwiązania i nie jest to zbyt skomplikowane. Może ktoś ma już doświadczenie z biblioteką WebSocket?Biblioteka WebSocket

Odpowiedz

9

Aby uzyskać interfejs API wysokiego poziomu, można użyć ws_client z biblioteki cpprest {opakowuje websocketpp}.

przykładowej aplikacji, który działa przeciwko 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; 
} 

Tutaj .wait() metoda służy do czekać na zadaniach, jednak kod może być łatwo modyfikowane zrobić I/O w sposób asynchroniczny.

+0

Dziękujemy! Czy obsługuje również subskrybcję kanału? – Bobface

+0

A także, jak mówi ** projekt Microsoft ** na ich stronie. Więc prawdopodobnie nie będzie działać na systemach Linux? – Bobface

+2

Jest całkiem niezły i działa na systemach Windows, OS X, iOS i ** Linux (w tym Android) **. W rzeczywistości zakodowałem i uruchomiłem ten przykład w systemie Ubuntu 15.10. –