Я "много" исследовал приложения для живого чата и еще много чего, но я не смог найти недостающую часть или направление, в котором мне следует идти.
Что я ' Частная система прямого обмена сообщениями между двумя пользователями без отправки запросов на выборку через фиксированные интервалы.
Что у нас уже есть. Полный PHP Rest API с MySQLдля всего нашего приложения, включая пользователей, сообщения, сообщения, профили, ... и все клиентское приложение Angular 5.
Текущая система обмена сообщениями работает на базовых POST для отправки сообщений и GET для получения новых сообщений (каждый30 секунд) (тогда никогда не было предназначения для приложения чата в реальном времени)
С точки зрения базы данных и API, между двумя идентификаторами UserID есть «диалоги», и каждый диалог содержит сообщения с идентификатором UserID-from.
Найдены предложения:
Сокеты (через Socket.io или что-то в этом роде): «проблема» в том, что мы находимся вхотя бык концу лета около 10 тысяч пользователей.Сокеты, вероятно, разрушат наш сервер или, по крайней мере, наш PHP API, если будет более 500 открытых сокетов, или я ошибаюсь?(наша текущая ситуация с GET, вероятно, также ..)
Firebase: Но у него есть своя отдельная база данных и все такое, и мы не уверены, как объединить это с нашим существующим API и аутентификацией итакие.
100 + темы и ситуации, которые похожи на "чат-приложение", а не на прямой обмен сообщениями между двумя зарегистрированными пользователями.
У меня также была идея создать отдельный микро-сервис для части обмена сообщениями, основанный на сервере NodeJS Express, но, опять же, клиентам потребуется открытый сокет для этого сервера, а не просто «сокет», априватный канал только для этих двух пользователей?(И тогда мне пришлось бы использовать некоторые грязные части nodejs-mysql для идентификаторов пользователей и аутентификации вместо запуска всего, например, в Mongo)
На данный момент ... Я не уверен, в каком направлениизайдите и как реализовать это без необходимости «передавать» наши данные обмена сообщениями стороннему серверу, например, Firebase, или тратить драгоценное время, пытаясь использовать 4-5 различных методов.
Я знаю, что, вероятно,Я должен переписать всю нашу часть обмена сообщениями на стороне клиента, но это меньше всего меня беспокоит.
В каком направлении мне идти и с какими мыслями?Может быть, кто-то в той же ситуации, что и для преобразования существующего приложения datababse-разговор-users-stuffs?