gwsocket est un serveur WebSocket simple, autonome, indépendant du langage, conforme à la RFC6455, écrit en C. Il se situe entre votre application et le navigateur du client, offrant une communication bidirectionnelle rapide entre ces deux-là avec facilité et flexibilité. Plus d'informations sur : https://gwsocket.io.
Très simple, redirigez simplement la sortie de votre application (stdout) vers stdin
ou vers un fichier (pipe nommé) et laissez gwsocket transférer les données vers le navigateur — C'est tout.
Par exemple, suivre les journaux de votre serveur dans le navigateur ne pourrait pas être plus simple
# tail -f /var/log/nginx/access.log > /tmp/wspipein.fifo
OU
# tail -f /var/log/nginx/access.log | gwsocket
Vous pouvez également récupérer les données du client dans (stdin) votre application. En fait, vous pouvez même envoyer la sortie de votre programme ncurses préféré au navigateur. Voir le screencast ci-dessus.
J'avais besoin d'un serveur WebSocket rapide , simple , sans dépendances , sans bibliothèques , conforme à la RFC6455, écrit en C, que je pourrais utiliser pour la version 1.0 de GoAccess en acheminant simplement les données vers l'intérieur et vers l'extérieur - WebSockets en toute simplicité !
gwsocket est indépendant du langage, consultez la page de manuel pour plus de détails et des exemples sur la façon de recevoir des données du navigateur et de les envoyer au navigateur.
L'installation de gwsocket est assez simple. Téléchargez-le, extrayez-le et compilez-le avec :
$ wget https://tar.gwsocket.io/gwsocket-0.4.tar.gz
$ tar -xzvf gwsocket-0.4.tar.gz
$ cd gwsocket-0.4/
$ ./configure
$ make
# make install
Aucune dépendance nécessaire. Comme c'est sympa n'est-ce pas :), enfin presque, vous avez besoin gcc
, make
, etc.
$ git clone s://github.com/allinurl/gwsocket.git
$ cd gwsocket
$ autoreconf -fiv
$ ./configure
$ make
# make install
Afin d'établir un canal entre votre application et le navigateur du client, gwsocket propose deux méthodes qui permettent à l'utilisateur d'envoyer et de sortir des données. La première consiste à utiliser l’entrée standard (stdin) et la sortie standard (stdout). La deuxième méthode consiste à utiliser un en-tête de taille fixe suivi de la charge utile. Voir les options ci-dessous pour plus de détails.
L'entrée/sortie standard est le moyen le plus simple d'envoyer/recevoir des données vers/depuis un client. Cependant, cela se limite à diffuser des messages à tous les clients. Pour envoyer des messages ou recevoir d'un client spécifique, utilisez le mode strict dans la section suivante. Voir des exemples spécifiques à une langue ici.
gwsocket implémente son propre petit protocole pour envoyer/recevoir des données. Contrairement au mode stdin/stdout , le mode strict vous permet d'envoyer/recevoir des données vers/depuis des clients connectés spécifiques ainsi que de savoir qui a ouvert/fermé une connexion WebSocket. Il vous donne également la possibilité de regrouper et d'envoyer autant de données que vous le souhaitez dans un seul message. Voir des exemples spécifiques à une langue ici.
Les options suivantes peuvent être fournies à la ligne de commande.
Option de ligne de commande | Description |
---|---|
-p --port | Spécifie le port à lier. |
-h --help | Aide en ligne de commande. |
-V --version | Affichez les informations de version et quittez. |
--access-log=<path/file> | Spécifie le chemin/fichier du journal d'accès. |
--addr=<addr> | Spécifie l'adresse à lier. |
--echo-mode | Configurez le serveur pour qu'il fasse écho à tous les messages reçus. |
--max-frame-size=<bytes> | Taille maximale d'un cadre Websocket. |
--origin=<origin> | Assurez-vous que les clients envoient l’en-tête d’origine spécifié lors de la prise de contact. |
--pipein=<path/file> | Crée un canal nommé (FIFO) qui lit à partir du chemin/fichier donné. |
--pipeout=<path/file> | Crée un canal nommé (FIFO) qui écrit dans le chemin/fichier donné. |
--std | Activez --stdin et --stdout . |
--stdin | Envoyez stdin au websocket. |
--stdout | Envoyez les données Websocket reçues vers la sortie standard. |
--strict | Analysez les messages en mode strict. Voir la page de manuel pour plus de détails. |
--ssl-cert=<cert.crt> | Chemin d'accès au certificat SSL. |
--ssl-key=<priv.key> | Chemin d'accès à la clé privée SSL. |
--unix-socket=<addr> | Spécifiez l'adresse du socket de domaine UNIX à laquelle lier le serveur. |
epoll
et kqueue
Licence MIT
Toute aide sur gwsocket est la bienvenue. Le moyen le plus utile est de l’essayer et de donner votre avis. N'hésitez pas à utiliser le suivi des problèmes Github et les demandes d'extraction pour discuter et soumettre des modifications de code.
Apprécier!