лучший подход для уведомлений в реальном времени - PullRequest
0 голосов
/ 30 июня 2018

прежде всего: это общий вопрос. У меня еще нет кода, мне просто нужно ваше (экспертное) мнение .

Хорошо, вот и все.

Я создаю веб-сайт для покупки / продажи вещей, что-то вроде ebay, но потом не такой большой (и для определенного типа продуктов). И мне нужны уведомления в реальном времени. До сих пор я использовал PHP / MySQL + jQuery / AJAX. Но я хочу что-нибудь получше.

Если кто-то что-то покупает, продавец должен получить уведомление о том, что что-то куплено. Уведомление может (а) быть «в реальном времени» (если продавец онлайн) или (б) задержано и показано, когда продавец выходит в сеть.

Я знаком с PHP, и я "дурачился" с Пушером. Это путь? Или мне нужно что-то вроде (например) Ratchet? Или это точно так же? И как мне "создать" это?

То, как я думаю Я должен сделать следующее:

  1. Хранить каждое уведомление в базе данных
  2. Если продавец (канал) онлайн, протолкнуть уведомление через пушер
  3. Если продавец (канал) находится в автономном режиме, извлекать все невидимые уведомления, когда он выходит в сеть
  4. Если уведомление видно, обновите его в базе данных (или, возможно, просто удалите уведомление из базы данных?)

Может ли кто-нибудь, кто имеет (некоторый) опыт работы с такого рода вещами, дать мне какой-нибудь совет?

Заранее спасибо!

PS: извините за мой английский (не мой родной язык, я надеюсь, вы все понимаете мой вопрос)

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Уведомления в реальном времени лучше всего доставлять с помощью веб-сокетов. Вы можете реализовать архитектуру websocket на своих серверах для отправки уведомлений. Но это иногда может быть утомительным и сложным. Также веб-сокеты требуют ресурсов на сервере, так как они используют открытые соединения.

Лучше использовать платформу, которая предоставляет ее в качестве службы. Умело может быть хорошим вариантом. Он доставляет данные в режиме реального времени и работает очень хорошо.

Опрос также может использоваться, если данные не должны быть доставлены в режиме реального времени, но с гибкостью задержки в несколько секунд. Но это связано с большими накладными расходами в сети.

0 голосов
/ 30 июня 2018

Вы можете использовать веб-сокеты изначально:

https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API

https://www.html5rocks.com/en/tutorials/websockets/basics/

https://caniuse.com/#search=websocket

Обратите внимание на библиотеки, упомянутые в первой ссылке.

Websockets действительно использует ресурсы на вашем сервере (открытые соединения), так что это может быть одной из причин, чтобы пойти на платное решение, такое как https://pusher.com/pricing

Я заметил, что вы никогда не упоминали, насколько точно вы хотите, чтобы уведомления появлялись. Веб-сокеты предназначены для обновлений в реальном времени, если что-то медленнее, скажем, 5-30 секунд, тогда опрос на сервере может быть проще, если вызываемый скрипт сведен к минимуму. Вы можете опросить разумно: быстрее в начале, медленнее, когда страница открыта дольше. Попробуйте проверить, что делает пользователь, движется ли курсор мыши по странице? Затем делайте обновления быстро, иначе замедляйте их. Пользователь прокручивает? Etc.

PS: Это не совсем проблема программирования, как вы сказали в начале. Это может считаться не по теме, и ответ на такой вопрос редко будет вознагражден или приветствоваться. Отсюда и тишина.

...