Решили для сайте сделать real-time chat, который в реальном времени будет оповещать о новых и доставлять новые сообщения.
Над проектом работал другой человек, но так как у него долгое время очень много работы, я принял решение отдать проект на доработку на фриланс.
Вот собственно сам чат проекта.
Сам проект написан на php7, mysql 5.7, nginx.
Ссылка на историю всего проекта, что и как было сделано для ознакомления.
В конце есть тз того что прошлый человек начал делать и не доделал.
Что именно нужно сделать:
Сейчас обработчик ошибок, очень странный, надо его обсудить.
В интерфейс работы с ws добавить три функции done, success и fail
Формат ответа приняли следующий
{
type: string - название события
data: mixed - объект ответа
error: mixed - объект ошибки
}
Если соединение рвется надо реконнект делать и вообще когда может произойти обрыв.
Сейчас не доставится отредактированное сообщение всем.
То есть человек А удаляет диалог с человеком Б, но диалог не удаляется а скрывается и когда уже человек Б тоже удаляет диалог, то он уже точно удаляется из таблицы. Также массовое удаление диалогов.
Реализовать механизм добавления пользователей в черный список (см. Формат таблицы). Нельзя добавить самого себя в чс, добавление несуществующего юзера, добавление уже существующего в черном списке юзера.
Проверки. Причем некоторые проверки надо добавить еще и в создание диалога. Блокировка на уровне бана аккаунта.
Добавить проверку заблокирован ли отправитель сообщения или получатель, если заблокирован, то выводим ошибку кто заблокирован.
Проверка не заблокировано ли у отправителя возможность отправлять сообщения. Если блок, то ошибку показать.
Проверка на 1000 символов, если более 1000 символов, обрезаем.
Не занес ли получатель в черный список отправителя сообщения, и наоборот не занес ли в чс отправитель получателя. Описать формат таблицы ниже
Нельзя отправить пустое сообщение.
Сейчас допустим если у меня открыта вкладка одна с диалогов, я отправлю сообщение, то ответ придет на одну вкладку, то есть сообщение которое я отправил не появится во второй вкладке. - реализация на клиенте
Поиск диалогов, то есть будет форма я ввожу туда ник или id получателя, и он мне выдает список диалогов.
Есть системные сообщения. В кроне реализовать функционал попыток отправить рест запрос на сервер, по истечению количества попыток - отправить сообщение в базу данных (таблица messages).
Реализовать рест доступ к функции отправки сообщений + защитить JWT
Из выше перечисленного не выполнено 4,8,9 пункты. Но опять же все нужно проверить и починить если что-то не работает из выше перечисленного. Также возможно я что-то захочу доработать.
Все что вам не понятно, я объясню покажу, расскажу.
Проект небольшой, я не готов платить сверх большие суммы, но я готов заплатить адекватную цену за ваш труд.
Оцените за сколько готовы сделать, я со своей стороны скажу готов ли я ее заплатить.
Безопасная сделка.
Работу требуется сделать в кротчайшие сроки.