Easywsclient es una biblioteca ligera y minimalista para C++ que facilita la integración de clientes WebSocket en proyectos de C++. Está diseñada para ser sencilla de usar, proporcionando una API clara para establecer conexiones WebSocket y gestionar la comunicación en tiempo real.
Estructura de directorios del proyecto
El repositorio principal tiene la siguiente organiazción:
- easywsclient.hpp // Cabecera principal con la definición de la interfaz.
- easywsclient.cpp // Implementación del núcleo de la biblioteca.
- example-client-cpp.cpp // Ejemplo de cliente que demuestra el uso de la librería.
- example-server-js // (Opcional) Ejemplo de servidor en JavaScript para pruebas.
- COPYING // Licencia de distribución del proyecto.
- Makefile // Script de compilación.
- README.md // Documentación principal.
- gitignore // Configuración de Git.
- easywsclient.hpp: Incluye este archivo en tu proyecto para acceder a todas las funcionalidades del cliente WebSocket.
- easywsclient.cpp: Contiene la lógica de implementación. Normalmente no se incluye directamente a menos que se prefiera compilar la librería junto con el código fuente.
- Archivos de ejemplo: Proporcionan ejemplos prácticos para comprender cómo iniciar conexiones y manejar mensajes.
Archivo de inicio y ejemplo de uso
El archivo example-client-cpp.cpp ilustra los pasos básicos para iniciar una conexión WebSocket. El flujo de trabajo genarel es:
- Incluir la cabecera
easywsclient.hpp. - Crear una instancia de
WebSocketmediante la funciónWebSocket::from_url. - Definir callbacks para eventos como recepción de mensajes o cambios de estado.
- Ejecutar un bucle de eventos para procesar mensajes y gestionar la conexión.
#include "easywsclient.hpp"
#include <iostream>
int main() {
// Crear el objeto de conexión WebSocket
WebSocket::pointer conexion = WebSocket::from_url("wss://ejemplo.com/websocket");
if (conexion) {
// Registrar callback para mensajes entrantes
conexion->set_message_callback([](const std::string& mensaje) {
std::cout << "Mensaje recibido: " << mensaje << std::endl;
});
// Bucle de espera de mensajes (simplificado)
while (conexion->getReadyState() != WebSocket::CLOSED) {
conexion->poll();
// Lógica adicional de la aplicación
}
}
return 0;
}
Configuración y compilación
Easywsclient no requiere archivos de configuración externos. La configuración se gestiona a nivel de compilación:
- Entorno Linux/macOS: Utilizar el
Makefileproporcionado para compilar. Ejecutarmakeen la terminal genera los archivos objeto necesarios. - Entorno Windows: Es necesario vincular la librería
ws2_32.lib(Windows Sockets) al compilar el proyecto. - Compilación manual: Se puede compilar directamente incluyendo
easywsclient.cppen el proceso de compilación de tu aplicación.
Los parámetros de conexión (URL, tiempo de espera, reconexión) se definen directamente en el código de la aplicación mediante la API de la biblioteca, sin necesidad de archivos de configuración adicionales.
# Compilación en Linux
g++ -o mi_cliente mi_cliente.cpp easywsclient.cpp -lssl -lcrypto -lpthread
# Compilación en Windows (ejemplo con MinGW)
g++ -o mi_cliente.exe mi_cliente.cpp easywsclient.cpp -lws2_32 -lssl -lcrypto
El proyecto está disponible en GitCode para su descarga y contribución.