goch — это автономный сервер живого чата, написанный на Go.
Это позволяет вам запускать программное обеспечение для живого чата в вашей собственной инфраструктуре.
Вы можете создать несколько частных и общедоступных чатов, в которых могут одновременно находиться два или более пользователей.
Для связи он использует конечные точки RESTful, веб-сокеты, потоковую передачу NATS и Redis.
goch — это форк Gossip со множеством дополнительных функций и исправлений.
Чтобы запустить goch локально, вам понадобится docker
, docker-compose
и go
установленные и установленные на вашем пути. После загрузки/клонирования проекта запустите ./up
, который скомпилирует двоичный файл и запустит docker-compose с помощью goch , NATS Streaming и Redis. Если ошибок не было, goch должен работать на локальном хосте (порт 8080).
Для запуска сервера необходимо установить переменные env ADMIN_USERNAME
и ADMIN_PASSWORD
. В репозитории они установлены на admin
и pass
соответственно, но вам, очевидно, следует изменить их по соображениям безопасности.
После запуска сервера доступны следующие маршруты:
POST /admin/channels
: Создаёт новый канал. Вы должны указать уникальное имя канала (обычно идентификатор), а ответ включает секрет канала, который будет использоваться для подключения к каналу позже. Эту конечную точку следует вызывать на стороне сервера с предоставленными учетными данными администратора. Ответ необходимо сохранить, чтобы в дальнейшем подключиться к каналу.
POST /register
: зарегистрировать пользователя в канале. Чтобы зарегистрироваться на канале, необходимо указать UID, DisplayName, ChannelSecret и ChannelName. При необходимости необходимо предоставить секрет пользователя, но в противном случае сервер сгенерирует и вернет его.
GET /connect
: подключается к чату и возвращает соединение WebSocket вместе с историей чата. Необходимо указать канал, UID и секрет. Опционально предоставляется LastSeq, который возвращает историю чата только после LastSeq (временная метка UNIX).
Остальные маршруты используются только как «помощники»:
GET /channels/{name}?secret=$SECRET
: Возвращает список участников канала. Имя канала должно быть указано в качестве параметра URL-адреса, а секрет канала — в качестве параметра запроса.
GET /admin/channels
: возвращает список всех доступных каналов.
GET /admin/channels/{name}/user/{uid}
: возвращает список непрочитанных сообщений в чате для пользователя.
goch распространяется по лицензии MIT. Подробности смотрите в файле LICENSE.
Эмир Рибич