@YoungSkipper

Динамические изменение данных на веб странице клиентов, при изменении на сервере?

Приветствую…



Хочется простого — я добавляю в html код теги вида {{somedata}} + есть некий серверный код.

После специальной сборки всего этого дела, я получаю возможность в серверном коде писать Client.somedata = «123» — и если данные поменялись, у все у кого данная страница сейчас загружена — данные так же поменяются.



Серверный язык не принципиален — но лучше из вариантов python/ruby — js тоже подойдет, но менее желательный.

Ну и хочется минимального функционала типа — не передавать данные, если они не изменились и т.п.



В целом подобное можно сделать на meteor.com — но там много чего друго накручено, хотелось бы более минимального функционала, а не сложного фреймворка.



Но и фрейворки какие либо готов посмотреть, если там подобное быстро делается.



UPDATE — все же ручками писать клиентский код не хочется, хочется именно автоматизации всего этого дела
  • Вопрос задан
  • 5006 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Можно сделать так: При сборке можно добавлять к тегу (тут много нюансов. в зависимости от того что вы хотите это может быть добавление атрибута или же оборачивание в тег. Вам решать) атрибута data-updatable=«name_of_variable»;

В коде на серверной стороне нужно детектить изменения переменных (скажем обращение к сэттерам объекта) и отправлять эти данные через какой-либо комет сервер (ну или формировать очередь на изменения данных у клиента которую будет обрабатывать Comet сервер).

Получать сообщения клиент может либо средствами WebSockets, либо шаред воркерами с сокетами, либо лонг пулингом. Тут тоже масса вариантов. Затем на клиентской стороне при получении данных с сервера будет происходить замена содержимого. Причем в случае а атрибутами можно задать точное поведение.
Ответ написан
CodeByZen
@CodeByZen
php, js, my/mssql, sqlite, html, css, it-consult
Я бы сделал так. При загрузке страницы jsом устанавливаем значения времени для ключевых блоков. Аякс по таймауту смотрит на сервер. А тот ему мог бы отдавать метку времени последнего изменения для запрашиваемого блока и его код. После этого, на стороне клиента сравниваем и если время не совпадает — обновляем.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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