67 votes

Bibliothèque autonome de serveur websocket en C ou C++.

J'aimerais créer un serveur websocket dans un de mes programmes C++.

Existe-t-il des bibliothèques C ou C++ autonomes pour créer des websockets ou la seule option consiste-t-elle à obtenir les sources de WebKit ou V8 et à extraire leur implémentation ?

88voto

warmcat Points 766

Plusieurs mois après votre question... J'ai écrit une bibliothèque C libwebsockets qui est LGPL et qui peut faire à la fois des actions de serveur et de client. Vous pouvez la trouver ici

http://libwebsockets.org

URL du dépôt :

http://git.libwebsockets.org

https://github.com/warmcat/libwebsockets.git

16voto

Alastair Maw Points 1549

Il convient également de souligner https://github.com/zaphoyd/websocketpp Vous pouvez utiliser boost::asio, surtout si vous utilisez déjà boost et que vous voulez quelque chose d'agréablement multiplateforme.

9voto

Flavien Volken Points 2985

Si vous voulez faire le vôtre, il y a en fait 3 méthodes spécifiques aux web sockets que vous devez implémenter :

  1. Une poignée de main : une fois que vous avez un client connecté avec une ordinaire, il suffit de laisser cette méthode parler avec le serveur. C'est la partie la plus partie la plus délicate car elle est sujette à des changements (et aussi parce que je ne pourquoi cela devait être si compliqué )
  2. Une méthode d'écriture : Commencez à écrire cet octet {0x00}, écrivez votre texte, Terminez en écrivant cet octet {0xFF}.
  3. Une méthode de lecture : Lisez un octet et vérifiez qu'il est {0x00} (si ce n'est pas le cas, c'est une erreur ), puis lisez à nouveau (et stockez dans un tampon) jusqu'à la séquence {0xFF, 0x00} Votre tampon devrait être rempli avec vos données + 1 octet (le 0xFF).

Vous devez alors rechercher un processus de poignée de main ouvert plutôt qu'une solution complète de serveur.

7voto

kanaka Points 23143

Si vous voulez spécifiquement faire un serveur WebSockets (par opposition à un client), alors noVNC (un client VNC HTML5) contient un utilitaire C (et python) nommé wsproxy qui est un proxy WebSockets vers TCP générique. Vous pourriez convertir la moitié de WebSockets en C++ assez facilement (ou simplement construire websocket.c en une bibliothèque statique et l'utiliser dans un serveur C++).

Les WebSockets sont assez faciles à mettre en œuvre dans un langage qui dispose déjà de bibliothèques de sockets ordinaires. Il s'agit simplement d'une poignée de main spéciale pour commencer et ' \x00...\xff ' de chaque paquet.

Disclaimer : J'ai créé noVNC et wsproxy.

3voto

nurettin Points 4083

mongoose prend en charge les websockets. Il est idéal pour l'intégration dans d'autres projets et la communication interprocessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X