Skip to content

kai-cpp/VoidServer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

VoidLink Messaging Server

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++).

Кроки збірки:

  1. Перейдіть до папки сервера:

    cd server
  2. Створіть файли збірки:

    cmake .
  3. Зберіть виконувач:

    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. Використовуйте вільно, але з посиланням на автора.

Контакти

Якщо є питання або ідеї, пишіть!

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors