![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
fedushok |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.9.2015 Репутация: нет Всего: нет |
Приветствую всех!
Имеется несколько (а то и больше) посетителей одного сайта, визуальное представление которого определяется базой данных этого сайта. Каждый из посетителей может вносить изменения в эту базу. Как в ответ на это изменение обновить страницу сайта в браузерах всех остальных посетителей сайта? |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Периодически опрашивать сервер на предмет "а не поменялось ли чего". Ajax'ом. Сервер должен выдавать, ну, к примеру, время последней модификации данных. Страница сравнивает это время со своим (вшитым страницу при ее генерации) и перезагружается, если надо.
Для обычной страницы сайта - задача совершенно ненужная. Для online-игрушки не очень быстрой - может и пойдет, для совместного редактирования страницы может оказаться слишком нереактивным средством. Зачем такое нужно? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
fedushok |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.9.2015 Репутация: нет Всего: нет |
Опрашивать сервер "не катит". Это нарушение компетенции. Если только сервер знает о наличии обновления, тогда он и должен выполнять работу по обновлению. Нужно другое решение.
Это сообщение отредактировал(а) fedushok - 31.1.2016, 10:24 |
|||
|
||||
igorold |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 557 Регистрация: 22.12.2005 Где: Россия->Урал-& gt;Миасс Репутация: нет Всего: 17 |
В клиент-серверной конфигурации, если клиент не сделает запрос, от сервера ничего не придет.
Разве есть другое решение кроме как предложения ksnk? Если есть, было бы интересно. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Вебсокет.
Если где-то это утверждение и верно, то явно не в веб-программирование. Сервер с клиентом установить связь не может. Возможные варианты уже описали, это или периодический опрос сервера или вебсокет. В случае с сокетом с сервером будет установлен постоянный коннект и, соответственно, можно будет передать любые данные и на странице их поймать с помощью WebSocket.onmessage В случае с опросом сервера так же возможен long polling это тоже по факту непрерывный коннект к серверу но на уровне HTTP. Суть заключается в том, что к серверу вешается подключение (обычно <30s), а сервер опрашивает себя сам на наличие изменений в цикле (из разряда while(true) { sleep(1) ...select new events... }), при получении данных или отваливание опроса по таймауту устанавливается новый "long poll" Это сообщение отредактировал(а) gta4kv - 2.2.2016, 09:10 |
|||
|
||||
fedushok |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.9.2015 Репутация: нет Всего: нет |
Насколько я разузнал WebSocket держит двустороннюю связь между сервером и клиентом. Если так, то что мешает серверу сделать обновление когда он сочтёт нужным? |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
На первый взгляд - ничего не мешает, кроме ограниченной поддержки вебсокетов броузерами и возможности отключения их из паранои. Хотя для узкого круга лиц, допущенных к редактору - можно их всех заставить пользоваться Хромом. Какая задача решается-то? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
fedushok |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.9.2015 Репутация: нет Всего: нет |
Вопрос не сколько в задаче, сколько в здравом смысле.
Если я правильно понял, то только EI 8 и 9 не поддерживают WebSocket-ы. В опере нужно включать специально. Капец какой-то. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |