goch es un servidor de chat en vivo autohospedado escrito en Go.
Le permite ejecutar un software de chat en vivo en su propia infraestructura.
Puedes crear múltiples salas de chat públicas y privadas donde dos o más usuarios pueden estar al mismo tiempo.
Para la comunicación, utiliza puntos finales RESTful, Websockets, NATS Streaming y Redis.
goch es una bifurcación de Gossip, con muchas características y correcciones adicionales.
Para ejecutar goch localmente, necesita docker
, docker-compose
y go
instalado y configurado en su ruta. Después de descargar/clonar el proyecto, ejecute ./up
, que compila el binario y ejecuta docker-compose con goch , NATS Streaming y Redis. Si no hubo errores, goch debería estar ejecutándose en localhost (puerto 8080).
Para que el servidor se ejecute, se deben configurar las variables de entorno ADMIN_USERNAME
y ADMIN_PASSWORD
. En el repositorio, están configurados como admin
y pass
respectivamente, pero obviamente debes cambiarlos por razones de seguridad.
Una vez que el servidor se está ejecutando, las siguientes rutas están disponibles:
POST /admin/channels
: Crea un nuevo canal. Debe proporcionar un nombre único para un canal (generalmente una identificación) y la respuesta incluye el secreto del canal que se utilizará para conectarse al canal más adelante. Este punto final debe invocarse en el lado del servidor con las credenciales de administrador proporcionadas. La respuesta debe guardarse para poder conectarse al canal más adelante.
POST /register
: Registra un usuario en un canal. Para registrarse en el canal, se debe proporcionar un UID, DisplayName, ChannelSecret y ChannelName. Opcionalmente, es necesario proporcionar el secreto del usuario, pero si no, el servidor generará y devolverá uno.
GET /connect
: se conecta a un chat y devuelve una conexión WebSocket, junto con el historial de chat. Es necesario proporcionar el canal, el UID y el secreto. Opcionalmente, se proporciona LastSeq, que devolverá el historial de chat solo después de LastSeq (marca de tiempo UNIX).
Las rutas restantes sólo se utilizan como 'ayudantes':
GET /channels/{name}?secret=$SECRET
: Devuelve la lista de miembros de un canal. El nombre del canal debe proporcionarse como parámetro de URL y el secreto del canal como parámetro de consulta.
GET /admin/channels
: Devuelve la lista de todos los canales disponibles.
GET /admin/channels/{name}/user/{uid}
: devuelve la lista de mensajes no leídos en un chat para un usuario.
goch tiene la licencia MIT. Consulte el archivo de LICENCIA para obtener más detalles.
Emir Ribic