Repolode
LockGit

LockGit/gochat

Лёгкий backend для мгновенных сообщений на чистом Go с поддержкой личных и групповых рассылок через WebSocket и TCP.

Звёзды
2,937
Форки
475
Открытые issues
30
Последний коммит
2 месяца назад

Что это?

gochat — система мгновенных сообщений, реализованная на чистом Go. Она поддерживает личную переписку между двумя пользователями и рассылку сообщений в чатах; уровни системы взаимодействуют по RPC, поэтому каждый из них можно масштабировать горизонтально.

Клиенты могут подключаться по WebSocket или TCP, а сообщения передаются между соединениями обоих типов. Сервисы находят друг друга через etcd, Redis используется как очередь сообщений и слой хранения, а для данных пользователей в демонстрационной конфигурации применяются sqlite3 и GORM. Их можно заменить другой реляционной базой данных или более мощной очередью, например Kafka или RabbitMQ.

Проект разделён на модули api, connect, logic, task и site, каждый из которых запускается отдельно одним бинарным файлом. Docker-конфигурация и скрипт запуска поднимают зависимости и демонстрационную чат-комнату; также доступен отдельный frontend на TypeScript и React.

Ключевые возможности

  • 01Личные сообщения и рассылка сообщений в чатах
  • 02Подключение клиентов по WebSocket и TCP с доставкой сообщений между протоколами
  • 03Обнаружение сервисов через etcd и взаимодействие уровней по RPC
  • 04Очередь сообщений на базе Redis, которую можно заменить на Kafka или RabbitMQ
  • 05Настройка зависимостей и демонстрации через Docker одной командой

Сценарии использования

  • Изучение архитектуры горизонтально масштабируемого чат-сервера на Go
  • Создание прототипа внутреннего чата или функции обмена сообщениями
  • Разработка собственного IM-backend на основе существующей бизнес-логики

Быстрый старт

  1. 1

    Клонируйте репозиторий

    git clone git@github.com:LockGit/gochat.git
  2. 2

    Запустите демо в Docker с помощью прилагаемого скрипта (локальный адрес)

    cd gochat && sh run.sh dev 127.0.0.1
  3. 3

    Откройте http://127.0.0.1:8080 в браузере, чтобы войти в чат

Что важно знать

  • При запуске без Docker требуются etcd и Redis, а также ручной запуск нескольких модулей.
  • Сообщения не сохраняются в базе данных, а только передаются через очередь.
  • В README указано, что в демонстрационном примере TCP-канал не включён.

В подборках

Темы

Частые вопросы

Что такое gochat?
Лёгкий backend для мгновенных сообщений на чистом Go с поддержкой личных и групповых рассылок через WebSocket и TCP. gochat — система мгновенных сообщений, реализованная на чистом Go. Она поддерживает личную переписку между двумя пользователями и рассылку сообщений в чатах; уровни системы взаимодействуют по RPC, поэтому каждый из них можно масштабировать горизонтально.
gochat можно использовать бесплатно? Какая у него лицензия?
gochat распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
gochat всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в gochat — 1 сент. 2026 г..
Для чего можно использовать gochat?
Изучение архитектуры горизонтально масштабируемого чат-сервера на Go Создание прототипа внутреннего чата или функции обмена сообщениями Разработка собственного IM-backend на основе существующей бизнес-логики
Как установить gochat?
Клонируйте репозиторий: git clone git@github.com:LockGit/gochat.git Запустите демо в Docker с помощью прилагаемого скрипта (локальный адрес): cd gochat && sh run.sh dev 127.0.0.1 Откройте http://127.0.0.1:8080 в браузере, чтобы войти в чат
Где скачать gochat?
Исходный код и инструкции по установке — на GitHub: https://github.com/LockGit/gochat

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Командный чат для самостоятельного размещения на Cloudflare Workers: обмен сообщениями в реальном времени, двусторонний мост с Telegram и серверное шифрование сообщений и файлов.

1,4 тыс.+31 за неделю590JavaScriptGPL-3.0Активно поддерживаетсяОбновлён позавчера