Void_server — це високопродуктивний сервер для месенджера, натхненний Discord, написаний на C++. Проект призначений для обробки текстових повідомлень, користувачів та каналів у реальному часі через TCP-з'єднання.
- TCP-комунікація: Надійна передача даних через сокети.
- Модульна архітектура: Код розділений на модулі для легкого розширення.
- Конфігурація: Налаштування сервера через структури та файли.
- Логування: Система логів для моніторингу та діагностики.
- Спільний код: Утиліти та типи, які можна використовувати в інших частинах проекту.
- Масштабованість: Підтримка кількох підключень, готова до додавання бази даних та аутентифікації.
Проект має чітку структуру для організації коду:
server/— Основна частина сервераsrc/— Головні файли джерелаmain.cpp— Точка входу, ініціалізація сервера та основний цикл.server.h/.cpp— Функції для ініціалізації, обробки з'єднань та очищення сервера.
config/— Конфігураційні файлиconfig.h— СтруктураServerConfigз налаштуваннями (порт, backlog, лог-файл тощо).
models/— Моделі данихmessage.h— Структура для повідомлень (текст, відправник).
controllers/— Обробники запитівconnection_controller.h/.cpp— Логіка обробки підключень клієнтів.
middleware/— Проміжне ПЗauth_middleware.h/.cpp— Плейсхолдер для аутентифікації (зараз завжди дозволяє).
database/— Код для роботи з базою даних (поки порожньо, для майбутніх розширень).utils/— Утиліти сервераlogger.h/.cpp— Клас для логування в консоль та файл.
logs/— Файли логів (створюються автоматично).routes/— Логіка маршрутизації (поки порожньо, для HTTP-подібних маршрутів у майбутньому).native/— Для швидкого коду на Rust/C++ (поки порожньо).CMakeLists.txt— Файл для збірки з CMake.
shared/— Спільний код між клієнтом та сервером (якщо буде клієнт)types/— Спільні типиcommon.h— Переліки та структури (MessageType, User, Channel).
utils/— Спільні утилітиutils.h/.cpp— Функції, як trim для рядків.
.gitignore— Правила для Git, щоб не комітити секретні файли чи збірки.README.md— Цей файл з документацією.
Проект використовує CMake для збірки. Переконайтеся, що у вас встановлені CMake та компілятор C++ (наприклад, g++).
-
Перейдіть до папки сервера:
cd server -
Створіть файли збірки:
cmake . -
Зберіть виконувач:
make
Після цього з'явиться виконувач void_server.
Запустіть сервер командою:
./void_serverСервер почне слухати на порту 8080 (за замовчуванням). Логи виводяться в консоль та файл logs/server.log.
Для тестування підключіться через telnet або напишіть клієнт:
telnet 127.0.0.1 8080Надішліть повідомлення — сервер відповість привітанням.
- База даних: Додайте підтримку PostgreSQL або SQLite у
database/. - Аутентифікація: Реалізуйте JWT або сесії в
middleware/. - Реал-тайм: Додайте WebSockets замість TCP для кращої інтерактивності.
- Клієнт: Створіть папку
client/для GUI-клієнта на Qt або іншому фреймворку. - Тести: Додайте unit-тести у
tests/з Google Test.
- C++17 або вище
- CMake 3.10+
- Linux/MacOS (для сокетів; на Windows потрібні Winsock)
Проект під ліцензією MIT. Використовуйте вільно, але з посиланням на автора.
Якщо є питання або ідеї, пишіть!