За последние 24 часа нас посетили 20559 программистов и 1097 роботов. Сейчас ищут 398 программистов ...

Обновление данных без обновления странички.

Тема в разделе "JavaScript и AJAX", создана пользователем Sofia, 2 янв 2019.

  1. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Доброго времени суток.
    Когда была необходимость на страничке вывести данные, но что-бы они менялись без обновления странички целиков... Вроде разобралась...
    Сейчас задача такая-же, но что-бы контент обновлялся не по таймеру, а по мере его изменения.

    Вот у меня переменная $num , она представляет обычную цифру, которая в базе данных меняется.
    Где-то попадалась статья с примером, но теперь уже не получается найти. Подскажите пожалуйста решение.
     
  2. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Это называется websocket. Я вот стесняюсь спросить а вы с @ubunta2 не знакомы?
     
  3. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Нет.

    Вот да, именно websocket.
    Нашла замечательную статью Веб-сокеты в каждый дом, даже исходник есть. Все очень подробно расписано, но я всеравно в тупике.
    У меня стоит обычный Апач вебсервер с PHP, исходник я скачала, открыла и ужаснулась... Там километровый код.
    Еще вот не понятно - WebSocket это отдельный сервер что-ли надо устанавливать? Вообще непонятно, с какой стороны к нему подойти. Может существует решение попроще, чем WebSocket? )
     
  4. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Столько информации почитала, но так ничего и не получилось. Единственное, что я поняла, это скрипт должен запущен на сервере, и когда пользователь открывает страничку, то взаимодействует со скриптом на сервере...

    Может кто уже разобрался с этой новинкой?
    В бд к примеру имеется 5 строчек, у пользователя открыта страница... Если добавилась одна строчка в БД, то у пользователя должно измениться на 6 без перезагрузки страницы и без таймеров...
    Кто с этим разобрался уже? Покажите пример плз.
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Ну возьми для начала что-то готовое. Centrifugo, например.

    А вообще, сервер веб-сокета запускается отдельно от апача и всего остального, отдельно от остального сайта, потому что он, в отличии от обычных программ на php, висит в памяти всегда. Запускается на отдельном порту, так как 80-й или 433 обычно занят уже на apache или nginx. Вот дальше начинается веселье, так как нужно сделать его доступным извне. Я обычно проксирую через nginx (через apache тоже можно, но у меня что-то не выходило), и использую готовые решения. Centrifugo, Laravel Echo, или готовые php-библиотеки для фреймворков.
     
  6. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Что-то google ничего готового не показал. Я даже читала про Angular... Та-же беда...
    Самое главное почему-то упускают в статьях - с чего начать.
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Я же привёл названия. Для вебсокетов нужен отдельный сервер, не apache, а серверная программа вебсокетов. Можно писать её на php самому, можно воспользоваться чем-то готовым. Вот, к примеру, https://centrifugal.github.io/ - неплохой вариант, можно поднять достаточно быстро. JS-клиент тоже готовый к этому есть, читай, разбирайся.

    Вот тоже неплохой вариант: https://socket.io/ - сервер на node, клиент на js, https://github.com/walkor/phpsocket.io - аналог сервера socketio на php.

    Главное понять, что сервер веб-сокета - вообще отдельная штукенция, не связанная с apache, nginx. Ну может кто лучше объяснит :)


    А он здесь каким боком, если ты не можешь на сервере организовать отправку уведомлений на клиент?
     
  8. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Вроде нашла подробную инструкцию по Laravel 5.3, темболее как раз у меня стоит OpenServer под Windows. Попробую понять как устанавливать... Застряла на Composer и NodeJS. Как ставить, какую версию качать, как настраивать... что-то в этом мануале не указано... листаю гугл.
     
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Текущая версия 5.7
    https://getcomposer.org/download/, https://getcomposer.org/doc/00-intro.md
    https://nodejs.org/en/
    --- Добавлено ---
    А после какого события меняется?
     
  10. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Переменная $num отображает количество новостей. Больше ничего. Хочу вот хотябы с этим разобраться =)
     
  11. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Т.е. типа если админ добавил новость, вы хотите, чтобы все об этом узнали без перезагрузки? Тогда да, веб. сокеты или sockets.io Схема будет такая:
    1. Крутится сервер веб-сокетов, который вы сделаете сами или прислушаетесь ко мне и возьмёте готовый
    2. Когда админ добавляет новость, вы каким-то образом связываетесь с этим отдельным сервером веб-сокетов, и говорите ему, чтоб он послал сообщение. Вариантов может быть много, например, через подписке Redis, или через REST-api, как в случае с Centrifugo. Теоретически можно сделать и чтоб сервер веб-сокетов постоянно проверял количество новостей в базе, и если оно изменилось, слал чего-то на фронт, но мне так не нравится
    3. Получив сигнал о том, что нужно сообщить новость, сокет сервер пересылает её на фронт
     
  12. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    @Sofia веб построен по схеме запрос-ответ, поэтому чтобы делать реалайтм, придется выйти за рамки привычных технологий.