gwsocket ist ein einfacher, eigenständiger, sprachunabhängiger, RFC6455-kompatibler WebSocket-Server, der in C geschrieben ist. Er sitzt zwischen Ihrer Anwendung und dem Browser des Clients und ermöglicht eine schnelle bidirektionale Kommunikation zwischen diesen beiden mit Leichtigkeit und Flexibilität. Weitere Infos unter: https://gwsocket.io.
Ganz einfach: Leiten Sie einfach die Ausgabe Ihrer Anwendung (stdout) nach stdin
oder in eine Datei (named Pipe) um und lassen Sie gwsocket die Daten an den Browser übertragen – das ist alles.
Beispielsweise könnte es nicht einfacher sein, die Protokolle Ihres Servers im Browser zu überwachen
# tail -f /var/log/nginx/access.log > /tmp/wspipein.fifo
ODER
# tail -f /var/log/nginx/access.log | gwsocket
Sie können die Daten des Kunden auch in (stdin) Ihrer Anwendung übernehmen. Tatsächlich können Sie sogar die Ausgabe Ihres bevorzugten Ncurses-Programms an den Browser senden. Siehe Screencast oben.
Ich brauchte einen schnellen , einfachen , in C geschriebenen RFC6455-kompatiblen WebSocket-Server ohne Abhängigkeiten und Bibliotheken , den ich für Version 1.0 von GoAccess verwenden konnte, indem ich einfach Daten ein- und ausleitete – WebSockets leicht gemacht!
gwsocket ist sprachunabhängig. Weitere Details und Beispiele zum Empfangen von Daten vom Browser und zum Senden an den Browser finden Sie in der Manpage.
Die Installation von gwsocket ist ziemlich einfach. Laden Sie es einfach herunter, extrahieren Sie es und kompilieren Sie es mit:
$ 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
Keine Abhängigkeiten erforderlich. Wie schön ist das nicht :), na ja, fast, du brauchst gcc
, make
usw.
$ git clone s://github.com/allinurl/gwsocket.git
$ cd gwsocket
$ autoreconf -fiv
$ ./configure
$ make
# make install
Um einen Kanal zwischen Ihrer Anwendung und dem Browser des Clients einzurichten, bietet gwsocket zwei Methoden, die es dem Benutzer ermöglichen, Daten ein- und auszusenden. Die erste Möglichkeit besteht in der Verwendung der Standardeingabe (stdin) und der Standardausgabe (stdout). Die zweite Methode besteht aus einem Header fester Größe, gefolgt von der Nutzlast. Weitere Einzelheiten finden Sie in den Optionen unten.
Die Standard-Eingabe/Ausgabe ist die einfachste Möglichkeit, Daten an/von einem Client zu senden/empfangen. Es ist jedoch auf das Senden von Nachrichten an alle Clients beschränkt. Um Nachrichten an einen bestimmten Client zu senden oder von diesem zu empfangen, verwenden Sie im nächsten Abschnitt den strikten Modus. Sprachspezifische Beispiele finden Sie hier.
gwsocket implementiert ein eigenes kleines Protokoll zum Senden/Empfangen von Daten. Im Gegensatz zum stdin/stdout -Modus ermöglicht Ihnen der strikte Modus das Senden/Empfangen von Daten an/von bestimmten verbundenen Clients sowie die Verfolgung, wer eine WebSocket-Verbindung geöffnet/geschlossen hat. Außerdem haben Sie die Möglichkeit, so viele Daten wie Sie möchten in einer einzigen Nachricht zu packen und zu versenden. Sprachspezifische Beispiele finden Sie hier.
Die folgenden Optionen können an die Befehlszeile übergeben werden.
Befehlszeilenoption | Beschreibung |
---|---|
-p --port | Gibt den zu bindenden Port an. |
-h --help | Hilfe zur Befehlszeile. |
-V --version | Versionsinformationen anzeigen und beenden. |
--access-log=<path/file> | Gibt den Pfad/die Datei für das Zugriffsprotokoll an. |
--addr=<addr> | Gibt die zu bindende Adresse an. |
--echo-mode | Stellen Sie den Server so ein, dass alle empfangenen Nachrichten wiedergegeben werden. |
--max-frame-size=<bytes> | Maximale Größe eines Websocket-Frames. |
--origin=<origin> | Stellen Sie sicher, dass Clients beim Handshake den angegebenen Ursprungsheader senden. |
--pipein=<path/file> | Erstellt eine benannte Pipe (FIFO), die aus dem angegebenen Pfad/der angegebenen Datei liest. |
--pipeout=<path/file> | Erstellt eine Named Pipe (FIFO), die in den angegebenen Pfad/die angegebene Datei schreibt. |
--std | Aktivieren Sie --stdin und --stdout . |
--stdin | Senden Sie stdin an den Websocket. |
--stdout | Senden Sie empfangene Websocket-Daten an stdout. |
--strict | Analysieren Sie Nachrichten im strikten Modus. Weitere Informationen finden Sie in der Manpage. |
--ssl-cert=<cert.crt> | Pfad zum SSL-Zertifikat. |
--ssl-key=<priv.key> | Pfad zum privaten SSL-Schlüssel. |
--unix-socket=<addr> | Geben Sie die UNIX-Domänen-Socket-Adresse an, an die der Server gebunden werden soll. |
epoll
und kqueue
MIT-Lizenz
Jede Hilfe zu gwsocket ist willkommen. Am hilfreichsten ist es, es auszuprobieren und Feedback zu geben. Nutzen Sie gerne den Github Issue Tracker und Pull Requests, um Codeänderungen zu besprechen und einzureichen.
Genießen!