@Gesparo
Fullstack разработчик

Как реализовать систему реального времени?

Добрый день.

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

Тоесть попадая на сайт, например: my-site.com, мы будем видеть текущее значение счетчика и так же отслеживать его увеличение, не перезагружая страницу.

P.S. Я взял счетчик для примера. Интересует именно понимание, есть ли такая возможность, если есть, то какой стек технологий можно применить, и как это правильно организовать.
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ответы на вопрос 4
@Nwton
Сталкивался с такой задачей на практике. Необходимо было строить график на сервере, сохранять значения точек в базу и отправлять каждую точку сразу после генерации всем посетителям в реальном времени.

В моем случае сервер был на node js. На сервере был запущен элементарный скрипт, внутри которого лежал setInterval с вызовом функции генерации и отправки точки.

Отвечая на вопрос про "стек технологий": node js + setInterval + socket io
Ответ написан
Комментировать
T_y_l_e_r
@T_y_l_e_r
При заходе на сайт в скрипт вставляется время счетчика с сервера, дальше работает скрипт.
Если перезагрузить браузер, то счетчик снова возьмется с сервера.
Таким образом 2 счетчика дублируют друг друга, при этом полная экономия трафика и нагрузки на сервер.
Ответ написан
Комментировать
@pudovMaxim
web-developer
истинного реального времени не получить. Всегда будет рандомная задержка. Но более-менее приближенное реализовать можно. Например делать реквесты на сервер каждые N-секунд и проверять значение. Либо делать лонг-пуллинг, либо открывать сокет.
Ответ написан
Комментировать
abyrkov
@abyrkov
JavaScripter
Либо счетчик вести и там, и там, и его сихронизировать.
А вообще задача из разряда "из пушки - по воробьям"
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы