goch est un serveur de chat en direct auto-hébergé écrit en Go.
Il vous permet d'exécuter un logiciel de chat en direct sur votre propre infrastructure.
Vous pouvez créer plusieurs salons de discussion privés et publics où deux utilisateurs ou plus peuvent se trouver en même temps.
Pour la communication, il utilise des points de terminaison RESTful, Websockets, NATS Streaming et Redis.
goch est un fork de Gossip, avec de nombreuses fonctionnalités et correctifs supplémentaires.
Pour exécuter goch localement, vous avez besoin docker
, docker-compose
et go
installés et définis sur votre chemin. Après avoir téléchargé/cloné le projet, exécutez ./up
qui compile le binaire et exécute docker-compose avec goch , NATS Streaming et Redis. S'il n'y a eu aucune erreur, goch devrait être exécuté sur localhost (port 8080).
Pour que le serveur fonctionne, les variables d'environnement ADMIN_USERNAME
et ADMIN_PASSWORD
doivent être définies. Dans le référentiel, ils sont respectivement définis sur admin
et pass
, mais vous devez évidemment les modifier pour des raisons de sécurité.
Une fois le serveur exécuté, les routes suivantes sont disponibles :
POST /admin/channels
: Crée une nouvelle chaîne. Vous devez fournir un nom unique pour une chaîne (généralement un identifiant), et la réponse inclut le secret de la chaîne qui sera utilisé pour se connecter à la chaîne ultérieurement. Ce point de terminaison doit être appelé côté serveur avec les informations d’identification d’administrateur fournies. La réponse doit être enregistrée afin de pouvoir se connecter à la chaîne ultérieurement.
POST /register
: Enregistrez un utilisateur dans un canal. Afin de vous inscrire à la chaîne, un UID, un DisplayName, un ChannelSecret et un ChannelName doivent être fournis. Le secret de l'utilisateur doit éventuellement être fourni, mais sinon, le serveur en générera et en renverra un.
GET /connect
: se connecte à une discussion et renvoie une connexion WebSocket, ainsi que l'historique des discussions. Le canal, l'UID et le secret doivent être fournis. En option, LastSeq est fourni, qui renverra l'historique des discussions uniquement après LastSeq (horodatage UNIX).
Les itinéraires restants ne sont utilisés que comme « aides » :
GET /channels/{name}?secret=$SECRET
: Renvoie la liste des membres d'un canal. Le nom du canal doit être fourni comme paramètre URL et le secret du canal comme paramètre de requête.
GET /admin/channels
: renvoie la liste de tous les canaux disponibles.
GET /admin/channels/{name}/user/{uid}
: renvoie la liste des messages non lus sur un chat pour un utilisateur.
goch est sous licence MIT. Vérifiez le fichier LICENSE pour plus de détails.
Émir Ribic