Чат в реальном времени в веб-версии и мобильном приложении: что мне использовать? [закрыто]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Чат в реальном времени в веб-версии и мобильном приложении: что мне использовать? [закрыто]

Сообщение Anonymous »

Скоро мне придется создавать чат в реальном времени, и мне сложно выбрать технологии/библиотеки для достижения этой цели, особенно в серверной части. У меня уже есть несколько вариантов, но мне нужно выбрать один и придерживаться его.
Вот мои ограничения:
  • Сообщения/каналы будут храниться в базе данных вместе с другими таблицами, необходимыми для проекта (например, таблицы пользователей).
  • Веб-сайт будет создан на Symfony.
    Мобильное приложение будет создано на React Native.
  • Чат должен быть «легко» реализован/использован в новых проектах с использованием того же стека для веб/мобильных устройств. (в комплекте решение? Или просто хорошо документировано для быстрого копирования/вставки)
  • Мне нужны некоторые функции, в которых часто могут происходить изменения в реальном времени, например, «индикатор печатает» или для отметки сообщения прочитаны, как только пользователь увидит их в своем интерфейсе (без обновления страницы/экрана)
  • Технологии реального времени (Mercure/WebSockets/...) должны размещаться самостоятельно и бесплатен для коммерческого использования.
Вот варианты, которые я имею в виду:
< ol>
[*]SSE с Mercure на Symfony + компонент React для чата в веб-части + React Native с использованием SSE с полифилом
[*]Symfony + WebSockets с Ratchet/Swoole / другая PHP-библиотека WebSockets? + Компонент React для чата в веб-части + React Native WebSockets (Socket.io для клиентской стороны?)
[*]Symfony + сервер Node.js (Socket.io / µWebSockets + Nest. js ?) + Компонент React для чата в веб-части + React Native Socket.io
[*]Что-то еще?

В заключение, вот вопросы, которые я задаю себе:
  • Какой лучший выбор между SSE и WebSockets для этого варианта использования. Я бы сказал, что WebSockets является «более» подходящим, даже если это можно сделать с помощью запроса SSE + POST.
  • Даже если WebSockets в целом является лучшим выбором, тот факт, что я использование Symfony для серверной части не делает Mercure очевидным выбором? Они продвигают его для этого варианта использования, и есть вероятность, что от него не откажутся в ближайшее время. Но тогда не будет ли я ограничен SSE через WebSockets, когда мне захочется использовать такие функции, как «набирает текст» или что-то еще, что может часто меняться в режиме реального времени? То же самое и с React Native. Я слышал, что полифил SSE — это, по сути, HTTP-опрос под капотом, но, возможно, я ошибаюсь.
  • Разве Ratchet не умер или не близок к этому? Похоже, у них проблемы с поддержкой проекта, они даже не уверены, что они поддерживают последнюю версию PHP. Если это так, то стоит ли мне использовать Swoole или другую стабильную/поддерживаемую/лучшую PHP-библиотеку для обработки серверной части WebSockets?
  • Должен ли я просто отказаться от идеи использования сервера WebSockets на PHP? и использовать Socket.io на выделенном сервере Node.js? Если да, то как мне передать данные сообщений в мою Symfony, чтобы их можно было зарегистрировать в базе данных без выполнения HTTP-вызовов и, возможно, потерять интерес к использованию WebSockets через SSE? Возможно, с помощью Redis Pub/Sub (никогда раньше этого не делал, ни Socket.io, ни Redis, но у меня нет проблем с обучением)
  • Если я выберу WebSockets, особенно если серверная часть больше не находится на моем Symfony, как я могу обрабатывать авторизацию, повторное подключение, сверку состояний или знать, кто на самом деле подписывается (и, следовательно, кто в сети), как это уже делает Mercure?
Это очень много, извините, очень надеюсь, что информации достаточно, заранее спасибо за ответы!

Подробнее здесь: https://stackoverflow.com/questions/785 ... ould-i-use
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»