2012-03-02 32 views
12

Necesito implementar un cliente websocket usando C++. Ya he creado un servidor websocket básico usando ruby. Pero ahora quiero probar la conexión usando c/C++. ¿Hay alguna biblioteca fácil de usar disponible para implementar websockets en c/C++?Cliente Websocket en C++

Gracias de antemano.

+9

Maldita sea, lo odio cuando la gente escribe _C/C++ _, decídase, ¿está usando _C_ o _C++ _? Hay ** no ** el mismo idioma. – ApprenticeHacker

+0

Estoy de acuerdo contigo ... pero el cliente está pidiendo demo en cualquiera de las c o C++. Lo siento por eso. :-) – hbdev012

+0

no hay problema. lol. – ApprenticeHacker

Respuesta

4

Existen boost :: asio y Poco.Net y probablemente algunos otros, pero los conectores de berbeley C-API no son tan difíciles, por lo que si no desea utilizar esas bibliotecas, échele un vistazo.

Editar: Lo siento, probablemente te equivoqué con "websockets". ¿Miraste aquí? http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations (Tomado de Simple C++ WebSocket Client (draft 08+ compatible)?)

+0

Actualmente investigando. Y encontré que websocket ++ es útil para mi implementación. Espero que funcione. Gracias :-) – hbdev012

+0

+1 por ir con websocket ++: es muy conforme con las especificaciones (RFC6455 final) y de alto rendimiento. y basado en ASIO. – oberstet

+0

Recomendamos encarecidamente ASIO – 111111

6

Hay una gran biblioteca aquí, Beast.WebSocket que se basa en gran medida en Boost.Asio: http://vinniefalco.github.io/

He aquí un programa de ejemplo que habla WebSocket:

#include <beast/websocket.hpp> 
#include <beast/buffers_debug.hpp> 
#include <boost/asio.hpp> 
#include <iostream> 
#include <string> 

int main() 
{ 
    // Normal boost::asio setup 
    std::string const host = "echo.websocket.org"; 
    boost::asio::io_service ios; 
    boost::asio::ip::tcp::resolver r(ios); 
    boost::asio::ip::tcp::socket sock(ios); 
    boost::asio::connect(sock, 
     r.resolve(boost::asio::ip::tcp::resolver::query{host, "80"})); 

    using namespace beast::websocket; 

    // WebSocket connect and send message using beast 
    stream<boost::asio::ip::tcp::socket&> ws(sock); 
    ws.handshake(host, "/"); 
    ws.write(boost::asio::buffer("Hello, world!")); 

    // Receive WebSocket message, print and close using beast 
    beast::streambuf sb; 
    opcode op; 
    ws.read(op, sb); 
    ws.close(close_code::normal); 
    std::cout << 
     beast::debug::buffers_to_string(sb.data()) << "\n"; 
} 
+0

tengo la versión de Boost: 1.53.0, y estoy recibiendo un error fatal: boost/beast/websocket.hpp: No existe ningún archivo o directorio – AMB

+0

Necesita Boost 1.58.0 o posterior, y debe agregar el directorio beast/include a sus rutas de inclusión. –

+0

descargo el último impulso y no puedo encontrar bestia en él, de todos modos descargué boost y bestia e intenté compilar mi código y obtuve muchos errores, por lo que ahora estoy probando con easywsclient, pero intentaré esta biblioteca mañana. identifique lo que salió mal, dijo que algún archivo .hpp falta mañana, error de publicación completa, debería haber paso a paso, sobre cómo ejecutar WebSocket Client. gracias – AMB