Создание чата для сайта с архитектурой клиент-сервер-клиент
Требуется создать стандартный чат с возможностью отправлять текстовые сообщения, эмодзи( в принципе, думаю это не проблема ), файлы. Интерфейс чата уже написан. Пролистал интернет в поиске информации, в конечном итоге понял, что слишком много вариантов: предлагают интегрировать существующие чат-системы( не подходит, хочу сам, чтоб понять ), чат на сокетах через js( приоритет ), чат на сокетах через php( не совсем подходит, так как js для меня проще ). Возможно есть еще какие-то варианты, надеюсь, Вы подскажите.
На данный момент у меня сложилось следующие понимание необходимых этапов для моего проекта:
- У каждого клиента имеется уникальный ID идентификатор.
- Клиент выбирает определенного собеседника из списка предложенных
- Происходит открытие чата; Подгрузка сообщений между собеседниками, если таковые есть( возможно, последние 50 сообщений можно было бы сохранять в сессии или localstorage, для более оптимальной работы ); Подключение клиента к сокету.
- После отправки сообщения одним из клиентов, сообщение записывается в БД, и в случае успешной записи выводится собеседнику( аналогично для файлов ).
На теории кажется достаточно, просто, но, чувствую, что это не так. Если в чем-то не прав - поправьте. Требуется ваши советы и необходимые интернет ресурсы, которые могли бы помочь новичку-среднечку создать чат соответствующий данным требованием.