Доброго времени суток. Когда была необходимость на страничке вывести данные, но что-бы они менялись без обновления странички целиков... Вроде разобралась... Сейчас задача такая-же, но что-бы контент обновлялся не по таймеру, а по мере его изменения. Вот у меня переменная $num , она представляет обычную цифру, которая в базе данных меняется. Где-то попадалась статья с примером, но теперь уже не получается найти. Подскажите пожалуйста решение.
Нет. Вот да, именно websocket. Нашла замечательную статью Веб-сокеты в каждый дом, даже исходник есть. Все очень подробно расписано, но я всеравно в тупике. У меня стоит обычный Апач вебсервер с PHP, исходник я скачала, открыла и ужаснулась... Там километровый код. Еще вот не понятно - WebSocket это отдельный сервер что-ли надо устанавливать? Вообще непонятно, с какой стороны к нему подойти. Может существует решение попроще, чем WebSocket? )
Столько информации почитала, но так ничего и не получилось. Единственное, что я поняла, это скрипт должен запущен на сервере, и когда пользователь открывает страничку, то взаимодействует со скриптом на сервере... Может кто уже разобрался с этой новинкой? В бд к примеру имеется 5 строчек, у пользователя открыта страница... Если добавилась одна строчка в БД, то у пользователя должно измениться на 6 без перезагрузки страницы и без таймеров... Кто с этим разобрался уже? Покажите пример плз.
Ну возьми для начала что-то готовое. Centrifugo, например. А вообще, сервер веб-сокета запускается отдельно от апача и всего остального, отдельно от остального сайта, потому что он, в отличии от обычных программ на php, висит в памяти всегда. Запускается на отдельном порту, так как 80-й или 433 обычно занят уже на apache или nginx. Вот дальше начинается веселье, так как нужно сделать его доступным извне. Я обычно проксирую через nginx (через apache тоже можно, но у меня что-то не выходило), и использую готовые решения. Centrifugo, Laravel Echo, или готовые php-библиотеки для фреймворков.
Что-то google ничего готового не показал. Я даже читала про Angular... Та-же беда... Самое главное почему-то упускают в статьях - с чего начать.
Я же привёл названия. Для вебсокетов нужен отдельный сервер, не apache, а серверная программа вебсокетов. Можно писать её на php самому, можно воспользоваться чем-то готовым. Вот, к примеру, https://centrifugal.github.io/ - неплохой вариант, можно поднять достаточно быстро. JS-клиент тоже готовый к этому есть, читай, разбирайся. Вот тоже неплохой вариант: https://socket.io/ - сервер на node, клиент на js, https://github.com/walkor/phpsocket.io - аналог сервера socketio на php. Главное понять, что сервер веб-сокета - вообще отдельная штукенция, не связанная с apache, nginx. Ну может кто лучше объяснит А он здесь каким боком, если ты не можешь на сервере организовать отправку уведомлений на клиент?
Вроде нашла подробную инструкцию по Laravel 5.3, темболее как раз у меня стоит OpenServer под Windows. Попробую понять как устанавливать... Застряла на Composer и NodeJS. Как ставить, какую версию качать, как настраивать... что-то в этом мануале не указано... листаю гугл.
Текущая версия 5.7 https://getcomposer.org/download/, https://getcomposer.org/doc/00-intro.md https://nodejs.org/en/ --- Добавлено --- А после какого события меняется?
Т.е. типа если админ добавил новость, вы хотите, чтобы все об этом узнали без перезагрузки? Тогда да, веб. сокеты или sockets.io Схема будет такая: Крутится сервер веб-сокетов, который вы сделаете сами или прислушаетесь ко мне и возьмёте готовый Когда админ добавляет новость, вы каким-то образом связываетесь с этим отдельным сервером веб-сокетов, и говорите ему, чтоб он послал сообщение. Вариантов может быть много, например, через подписке Redis, или через REST-api, как в случае с Centrifugo. Теоретически можно сделать и чтоб сервер веб-сокетов постоянно проверял количество новостей в базе, и если оно изменилось, слал чего-то на фронт, но мне так не нравится Получив сигнал о том, что нужно сообщить новость, сокет сервер пересылает её на фронт
@Sofia веб построен по схеме запрос-ответ, поэтому чтобы делать реалайтм, придется выйти за рамки привычных технологий.