2012-03-03 20 views
5

Tengo mi propia implementación de socket que admite la conexión del cliente tcp normal. Ahora me gustaría agregar soporte websocket en mi programa de servidor. En ese caso, tendré que admitir los protocolos de handshaking y de enmarcado de mensajes que son compatibles con los principales navegadores web. Pude manejar la parte del apretón de manos, pero me quedé atascado al tratar con el encuadre y desenmarañar los mensajes. ¿Existe alguna biblioteca C o C++ que maneje la codificación y decodificación de los marcos de mensajes websocket, y sea compatible con los principales protocolos websocket utilizados por los principales navegadores web?Biblioteca C o C++ para codificar y decodificar tramas de websocket

La mayor parte de la implementación actual que encontré (es decir, libwebsocket, websocketpp, etc.) implementa su propia biblioteca de servidor y cliente, lo que significa que necesito usar su implementación de socket. No quiero hacer eso porque esto requerirá que modifique muchas cosas en mi programa actual, y no es una opción para mí. Lo que necesito es simplemente una biblioteca simple que maneje la codificación y decodificación de los marcos de websocket (y/o también maneje la parte de handshaking, pero no es obligatoria).

+1

¿qué tal portar desde [phpws] (http://code.google.com/p/phpws/source/browse/phpws/websocket.framing.php)? el código parece bastante sencillo. – Chikei

Respuesta

5

La biblioteca websocketpp tiene un diseño agradable y las clases de manejo de cuadros no se mezclan con las de socket. Existe dependencia en las bibliotecas BOOST y STL. STL no es un problema y la dependencia BOOST es bastante fácil de evitar. Simplemente comience desde el archivo websocket_frame.hpp de la rama policy-refactor.

6

Autor de la biblioteca Websocketpp aquí.

El procesamiento de cuadros y el código de procesamiento de handshake están completamente separados del código de socket/red. Mire la carpeta de procesadores de la rama policy-refactor. Hay uno para el borrador 76 (hybi_legacy) y otro para el RFC6455 (hybi/hybi_header). Los procesadores de fotogramas leen desde una transmisión STL que puede completar a través de su propio código de red o desde otra fuente.

Envíame un PM en github si tienes más preguntas específicas.

+5

Haga más preguntas aquí, usando comentarios, para que otras personas también puedan aprender de ello. –

Cuestiones relacionadas