goch ist ein selbst gehosteter Live-Chat-Server, der in Go geschrieben ist.
Es ermöglicht Ihnen, eine Live-Chat-Software auf Ihrer eigenen Infrastruktur auszuführen.
Sie können mehrere private und öffentliche Chatrooms erstellen, in denen sich zwei oder mehr Benutzer gleichzeitig aufhalten können.
Für die Kommunikation werden RESTful-Endpunkte, Websockets, NATS-Streaming und Redis verwendet.
goch ist eine Abzweigung von Gossip mit vielen zusätzlichen Funktionen und Korrekturen.
Um goch lokal auszuführen, müssen docker
, docker-compose
und go
installiert und auf Ihren Pfad eingestellt sein. Führen Sie nach dem Herunterladen/Klonen des Projekts ./up
aus, das die Binärdatei kompiliert und docker-compose mit goch , NATS Streaming und Redis ausführt. Wenn keine Fehler aufgetreten sind, sollte goch auf localhost (Port 8080) laufen.
Damit der Server ausgeführt werden kann, müssen die Umgebungsvariablen ADMIN_USERNAME
und ADMIN_PASSWORD
festgelegt werden. Im Repository sind sie auf admin
bzw. pass
eingestellt, aber aus Sicherheitsgründen sollten Sie diese natürlich ändern.
Sobald der Server läuft, stehen folgende Routen zur Verfügung:
POST /admin/channels
: Erstellt einen neuen Kanal. Sie müssen einen eindeutigen Namen für einen Kanal angeben (normalerweise eine ID), und die Antwort enthält das Geheimnis des Kanals, das später für die Verbindung zum Kanal verwendet wird. Dieser Endpunkt sollte serverseitig mit den bereitgestellten Administratoranmeldeinformationen aufgerufen werden. Die Antwort sollte gespeichert werden, um später eine Verbindung zum Kanal herzustellen.
POST /register
: Registrieren Sie einen Benutzer in einem Kanal. Um sich für den Kanal zu registrieren, müssen UID, DisplayName, ChannelSecret und ChannelName angegeben werden. Optional muss ein Benutzergeheimnis angegeben werden. Andernfalls generiert der Server eines und gibt es zurück.
GET /connect
: Stellt eine Verbindung zu einem Chat her und gibt eine WebSocket-Verbindung zusammen mit dem Chat-Verlauf zurück. Kanal, UID und Secret müssen angegeben werden. Optional wird LastSeq bereitgestellt, das den Chatverlauf erst nach LastSeq (UNIX-Zeitstempel) zurückgibt.
Die restlichen Routen werden nur als „Helfer“ verwendet:
GET /channels/{name}?secret=$SECRET
: Gibt eine Liste der Mitglieder in einem Kanal zurück. Der Kanalname muss als URL-Parameter und das Kanalgeheimnis als Abfrageparameter angegeben werden.
GET /admin/channels
: Gibt eine Liste aller verfügbaren Kanäle zurück.
GET /admin/channels/{name}/user/{uid}
: Gibt eine Liste ungelesener Nachrichten in einem Chat für einen Benutzer zurück.
goch ist unter der MIT-Lizenz lizenziert. Weitere Informationen finden Sie in der LICENSE-Datei.
Emir Ribic