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
6
A
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.
Dziękujemy! Czy obsługuje również subskrybcję kanału? – Bobface
A także, jak mówi ** projekt Microsoft ** na ich stronie. Więc prawdopodobnie nie będzie działać na systemach Linux? – Bobface
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. –