Skip to content

Aladser/messenger.local

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Мессенджер

Мессенджер, работающий в асинхронном режиме, используя вебсокеты (библиотека Ratchet)

  • Сайт сделан на основе MVC-фреймворка.
  • В качестве асинхронного общения между клиентом и сервером используется вебсокет: встроенная JS-библиотека и PHP Ratchet. Обмен сообщениями происходит с помощью php-класса Aladser\Core\ChatWebsocketServer и JS-файла chats.js
  • Название MySQL БД: messenger.
  • Из-за ограничений MySQL используются триггеры на добавление сообщения и создание чата: проверка пользователя-отправителя и типа чата.
  • Для отправки почты используются phpmailer, mail.ru SMTP-сервер. За отправку писем отвечает класс Aladser\Core\EMailSender
  • Конфигурация сайта находится в /application/config.php
  • Модели:
    • UserEntity - модель БД таблицы пользователей
    • MessageEntity - модель БД таблицы сообщений
    • ContactsEntity- модель БД таблицы контактов
    • ConnectionEntity - модель БД таблицы соединений пользователей
  • boostrap.php - запуск сайта и серверного вебсокета *
  • chat-server.php - запуск серверного вебсокета
  • Изображения профилей хранятся в /application/data/profile_photos. Когда выбирается файл изображения в проводнике, временно файл загружается в /application/data/temp. При сохранении файл перемещается в profile_photos
  • Авторизация пользователя сохраняется в куки без возможности отключения
  • есть файлы логов сервера Apache, вебсокета, парсинга PID-процессов Linux в папке logs

Структура сайта

  • Главная страница

main

  • Регистрация нового пользователя

register

  • Авторизация

login

  • Чаты

chat

  • Профиль

profile

Структура БД:

бд

  • пользователи users
  • чаты chats
  • участники чатов chat_participants
  • сообщения чатов messages

Интерфейс

  • При получении нового сообщения пользователем чат отправителя подсвечивается серым цветом.

новое сообщение

  • Принятие, изменение, пересылка и удаление сообщений происходит через вебсокет.

новое сообщение

  • при получении сообщения можно включить звуковые уведомления.

новое сообщение новое сообщение

  • Если вебсокет недоступен, то перед отправкой сообщения вылезет предупреждение. По умолчанию вебсокет висит на localhost.

ошибка вебсокета

  • Создание чатов контактов и групповых чатов, добавление сообщений в БД совершается через процедуры.
  • В групповой чат любой участник может добавить нового участника.

новый участник группы

  • Пользователь в БД ищется по публичной почте или никнейму.

  • можно удалять контакты и группы. Группу может удалить любой участник (администратор группы недоделан).

Разворачивание сайта

  • Файл конфига Apache. Предполагается, что сайт лежит в папке /var/www
<VirtualHost *:80>
        ServerName messenger.local
        DocumentRoot /var/www/messenger.local
        ErrorLog /var/www/messenger.local/logs/error.log
        CustomLog /var/www/messenger.local/logs/access.log combined
        <Directory /var/www/messenger.local>    
                Options Indexes FollowSymLinks               
                AllowOverride All               
                Require all granted    
        </Directory>      
</VirtualHost>
  • Установить модуль:

apt-get install php8.1-mysql

  • Активировать модуль Apache:

sudo a2enmod rewrite

  • в папке storage/dumps SQL-код для создания таблиц и процедур