Синхронизация информации о клиентах в режиме реального времени, лучшие практики и советы - PullRequest
0 голосов
/ 12 мая 2019

Я пишу бэкэнд-приложение на PHP, приложение JS / Jquery, которое позволит пользователям «общаться» в около реального времени.По крайней мере, это надежда, мой вопрос, каков мой лучший образ действий?Я лучше всего использовать WebSockets для отправки данных между сервером и клиентом или будет использовать AJAX и какой-то таймер (х количество секунд) будет лучше.Меня беспокоит способ AJAX, заключающийся в том, что на сервере может потребоваться более 10 клиентов, запрашивающих данные каждые 15-30 секунд.Мне нужно, чтобы это было в режиме реального времени, и поэтому 5 минут не совсем реально.

Примером того, что я пытаюсь сделать, было бы, если бы у меня было 5 пользователей на странице, а пользователь 1 обновил свой статус, я бы хотел, чтобы пользователи 2,3,4 и 5 увидели обновление каккак можно быстрее без необходимости обновлять.

Я смешан с тем, что считаю лучшим, и я не хочу начинать делать это одним способом и обнаруживать, что это небезопасно или ужасно после того, как я наполовину закончил.Какой мой лучший маршрут с таким приложением?

Ответы [ 2 ]

2 голосов
/ 12 мая 2019

Вот список популярных возможных решений:

  1. Короткий опрос (на что вы ссылаетесь в AJAX
  2. Long Polling (AJAX тоже, но не слишком много запросов)
  3. WebSockets
  4. WebRTC

Итак, для короткого опроса, как вы сказали, он потребляет много ресурсов, поэтому давайте удалим его из списка. Что касается длительного опроса, его идея заключается в том, что запрос отправляется на сервер, и сервер не отвечает, если не произошло новое событие (сохраняет запрос), но оно редко используется в современной разработке. так что если вы собираетесь работать с другими разработчиками, это своего рода плохое решение.

для WebRTC, совместимость с браузерами не так уж велика и все еще черновик в W3C.

Таким образом, вы остались без WebSockets, и да, они потребляют оперативную память, но не процессор Баран намного дешевле (и он тоже не потребляет слишком много).

Что касается безопасности, их можно считать равными (за исключением WebRTC, который лучше, потому что на самом деле это P2P-коммуникация)

Примечание: не думайте об этом :)

Вот некоторые ресурсы, которые могут вам помочь:

  1. https://webrtc.org/
  2. https://github.com/walkor/phpsocket.io // Библиотека сокетов для PHP, аналогичная Socket.io
  3. https://socket.io
  4. Какие протоколы связи в реальном времени доступны для Интернета? Список протоколов
  5. https://codeburst.io/polling-vs-sse-vs-websocket-how-to-choose-the-right-one-1859e4e13bd9 отличная статья для опроса, веб-розетки и крышки тоже SSE
0 голосов
/ 12 мая 2019

есть один способ сделать RTC, приложение RealTime, просто используйте Socket.io "WebSocket" для сигнализации, а перед этим сделайте полный просмотр этих веб-страниц:

https://bloggeek.me/

https://www.html5rocks.com/en/tutorials/webrtc

https://w3c.github.io/webrtc-pc/#rtcsignalingstate-enum

https://www.w3.org/TR/mediacapture-streams/#legacy-interface-extensions

и я начинаю разработку этой технологии с этой книгой введите описание ссылки здесь откроется ваше представление об использовании RTC и всех подробностях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...