Johnny07
@Johnny07

Как правильно реализовать обновление динамических данных в RealTime?

Доброго времени суток.

Задача: Выводить на страницу данные из БД и обновлять их в реальном времени без перезагрузки страницы, по инициативе сервера.

Мое решение: Сейчас при загрузке страницы я делаю Ajax запрос к серверу и выдаю данные на страницу через JS. Данными является массив строк из БД. На сервер есть демон, который проводит мониторинг данных, обновляет информацию в БД и вызывает через Comet сервер JS функцию в браузере пользователя на нашей странице. Функция обращается через Ajax к контроллеру который используется при загрузке страницы и обновляет данные на странице.

Проблема: В контроллере для получения данных из БД я использую PHP, тут же находится весь HTML код, который передается Ajax`ом на страницу. Мне нужно сделать вывод информации при загрузке страницы с помощью PHP, а обновлять уже Ajax`ом, но возникает проблема дублирования HTML кода, непосредственно на самой странице и в контроллере и при любом обновление структуры HTML придется делать правку в обоих местах.

Вопрос: Как правильно реализовать мою задачу, что бы не пришлось дублировать HTML код?

Примечание: Данные на странице необходимо обновлять все сразу, потому как из-за обновления всего одной строки в БД, может измениться вся сортировка выдачи. Поэтому варианты обновления только тех элементов, которые были затронуты мне не подходит.
  • Вопрос задан
  • 2838 просмотров
Решения вопроса 1
Johnny07
@Johnny07 Автор вопроса
Проблема заключалась в моей невнимательности, решается все просто: при загрузке странице данные синхронно загружает контроллер, который используется для асинхронного обновления через Ajax. Всем спасибо и продуктивного вечера. :-)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ну если говорить о правильно...

1) на сервере крутится демон который собирает всю эту статистику и позволяет отдавать ее по изменениям.
2) клиенты коннектятся к серверу через websockets/long poling и таким образом получают актуальные данные. То есть не просто "скажи клиентам что бы обновили данные" а посылать сразу данные.
3) передаваться должны только данные, рендриться пусть все на клиенте. Это решает проблему с сортировкой - ее можно делать и на клиенте.

Профит.
Ответ написан
@skynetdev
Что мешает корректно выводить весь HTML так что бы он не дублировался? Большая проблема? В чем именно?
Я проблемы не увидел
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы