HTTP: взаимодействие клиента и сервера

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

HTTP: взаимодействие клиента и сервера

Сообщение ARV »

Может кто-то объяснить на пальцах, как реализуется такая фича, как уведомление со стороны сервера о том, что инфа на html-страничке изменилась и клиент должен обновить страничку?

Допустим, я сделал программку, которая по мониторит определенный порт и выдает по запросу в этот порт генерируемую HTML-страничку. браузер эту страничку показал, а на страничке, допустим, напряжение АЦП показано.

моя программка измерила в очередной раз напряжение - как она может уведомить клиента о необходимости обновить страничку? Или просто надо рефрешить страничку почаще? как это по уму делается в нынешних условиях?

мне только объяснять надо попроще... и, если есть решение, то тоже минимальной сложности, потому как самое тупое - каждую секунду обновлять страничку, - я и так знаю, как сделать, и альтернатива мне желательна примерно такого уровня сложности... если она есть, конечно.

просто хочу с минимальными заморочками обеспечить возможность на смартфоне видеть то, что я там наизмерял. писать приложение для смартфона - это перебор...

Добавлено after 2 minutes 20 seconds:
да, минус моего тупого решения очевиден - страничка будет "мерцать" наверняка при перезагрузке. вот потому и ищу альтернативу... чтобы обновлять, возможно, не все, а что-то... ну, в этих технологиях я вообще профан... может, вообще чушь несу...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
kaetzchen
Друг Кота
Сообщения: 11994
Зарегистрирован: Пн апр 19, 2010 00:04:18
Откуда: Малороссия

Re: HTTP: взаимодействие клиента и сервера

Сообщение kaetzchen »

зачем нттр? для андроида куча готовых решений есть, да хоть mqtt, blink,
Последний раз редактировалось kaetzchen Пт май 22, 2020 09:25:36, всего редактировалось 1 раз.
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: HTTP: взаимодействие клиента и сервера

Сообщение ARV »

при чем тут андроид? браузер есть везде, смысл именно в том, чтобы выдавать страничку, которую хоть на утюге можно посмотреть
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Муркиз
Друг Кота
Сообщения: 25854
Зарегистрирован: Пн фев 09, 2009 22:19:49
Откуда: Когда-то был прекрасный город для людей

Re: HTTP: взаимодействие клиента и сервера

Сообщение Муркиз »

Вы неправильно понимаете идеологию клиент-серверных взаимодействий.
Серверу лишь положено обслуживать запросы. Поэтому в броузеров есть функция задания периодичности проведения обновления информации с сервера. Там, где присутствует, проверка по дате странички.

Какой будет протокол, это роли не имеет.

Если в рамках идеологии клиент-серверных нужно проводить обновление с удаленной стороны, то меняйте местами клиента с сервером.

Либо устраивайте на удаленной стороне активного агента, как например, в медийных потоковых рассылках.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: HTTP: взаимодействие клиента и сервера

Сообщение ARV »

Муркиз писал(а):Либо устраивайте на удаленной стороне активного агента, как например, в медийных потоковых рассылках
вот примерно об этом я и спрашиваю - как это делается? активный агент, как я понимаю, это java-скрипт или что-то типа того, указание на загрузку которого я в коде своей страничке и отправляю? браузер его грузит, запускает, а скрипт потом сам шлет в мою программку запросы и отрисовывает полученные результаты?

моя предполагаемая программа будет работать на компьютере. не хотелось бы всякие апачи и т.п. ставить, хотелось бы обойтись только мониторнгом порта и выдачей в него чего-то там... возможно ли это?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
Муркиз
Друг Кота
Сообщения: 25854
Зарегистрирован: Пн фев 09, 2009 22:19:49
Откуда: Когда-то был прекрасный город для людей

Re: HTTP: взаимодействие клиента и сервера

Сообщение Муркиз »

Возможно. DDOS в пределе это называется. Вот и бери за шаблон его скрипты для броузера. Если просто закольцованный цикл с запросом трудности написать составляют.
Реклама
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: HTTP: взаимодействие клиента и сервера

Сообщение Morroc »

Простой вариант - использовать мета-тег refresh на страничке, будет автообновляться и мерцать, вариант посложнее можно поискать по "ajax примеры" - это именно скрипт, тянущий данные со специальной страницы, содержащей только данные, потом скрипт подменяет значения в обьектах страницы без ее перезагрузки.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: HTTP: взаимодействие клиента и сервера

Сообщение ARV »

Morroc писал(а):использовать мета-тег refresh на страничке
это мне известно, и в самом первом своем сообщении я об этом писал.
Morroc писал(а):это именно скрипт
меня вот этот вариант больше интересует, но без "тянущихся с других сайтов" скриптов. т.е. мне бы надо скрипты, внедренные сразу в HTML-код возвращаемой странички.

тут бы просто понять, как следует поступать... таймер какой-то, что ли, нужен? или какой-то способ открыть "канал" и ждать, когда по этому каналу придут данные, на которые потом реагировать? вот в этом затык. я понятия не имею, какие средства в джаваскрипте есть для подобного... и есть ли вообще...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: HTTP: взаимодействие клиента и сервера

Сообщение Morroc »

Понятно. Так тоже делают, можно по "comet ajax" почитать если оставаться в рамках http или "javascript websocket". Незакрываемое соединение я как то пробовал, websocket нет. Мне кажется с минимальными заморочками будет классический ajax без push со стороны сервера если обновление по таймеру устраивает, но ради интереса можно попробовать и "канал", с ним разве что какие то события можно "мгновенно" клиенту отправить, мне кажется это для игрушек и чатов только критично.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: HTTP: взаимодействие клиента и сервера

Сообщение ARV »

я планирую таким образом сделать интерфейс управления оборудованием, поэтому, если есть возможность пихать клиенту данные по инициативе сервера - это бы меня устроило как нельзя лучше.

но вместо правильных слов мне бы просто пример реального скрипта. загрузку ajax я не хочу делать, т.к. планируется, что рабочая локалка будет изолирована от интернета...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: HTTP: взаимодействие клиента и сервера

Сообщение Eddy_Em »

Советую сразу же переходить на вебсокеты.
Собственно, сам сейчас занимаюсь поиском легковесной (а не монстра libwebsockets) сишной библиотеки, умеющей wss. В этом случае будет намного проще обеспечить интерактивность и асинхронность.
Если же особо шустрой реакции не нужно, можно на старых добрых CGI делать взаимодействие. Но в этом случае будет сложней обеспечить безопасность: каждый раз придется передавать "сессионный ключ", т.е. он будет мелькать по нескольку раз в секунду!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: HTTP: взаимодействие клиента и сервера

Сообщение Morroc »

На телефоне не осилю пример, с копипастом беда полная или я пользоваться не умею ) ajax и прочее как принцип, библиотеки готовые можно и не использовать, если в локалке и без прокси, то можно просто открывать http-запрос javascript'том и не закрывать, проверяя по таймеру нет ли новых данных в ответе, точно не помню какой компонент так может, гляну позже.
Последний раз редактировалось Morroc Ср май 27, 2020 10:56:46, всего редактировалось 2 раза.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: HTTP: взаимодействие клиента и сервера

Сообщение ARV »

Morroc писал(а):можно просто открывать http-запрос javascript'том и не закрывать, проверяя по таймеру нет ли новых данных в ответе
вот как это делать?! что там за классы в этом джаваскрипте, что за методы и т.п.? я вчера ковырял эту тему несколько часов, так пока сообразил, что для формирования строки с числами и текстом можно тупо написать var s = "число равно" + 12; и в результате в s у меня будет строка "число равно 12"... темный мрачный лес, короче
Eddy_Em писал(а):можно на старых добрых CGI делать взаимодействие. Но в этом случае будет сложней обеспечить безопасность: каждый раз придется передавать "сессионный ключ", т.е. он будет мелькать по нескольку раз в секунду!
безопасность пока вообще никак меня не волнует - процесс чисто технологический, безопасный по сути, не коммерческий. а вот что такое сессионный ключ, как он делается, куда и чем отправляется, и для чего служит - вот это я не понимаю совсем.

серверная часть у меня пишется на freepascal, и состоит из модуля Indy HTTP Server, который тупо выдает мне GET-запрос в виде строки... и что там в ней за что отвечает, я понятия не имею. куки какие-то... :facepalm:
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: HTTP: взаимодействие клиента и сервера

Сообщение Morroc »

Скорее всего это то, что по умному называется SSE, но в этом случае мы получаем только инфу с сервера, в обратную сторону придется как то переоткрыть канал, отправив в новом запросе команду, мне такое не надо было. EventSource(url)

Для управления можно не закрывать соединение со стороны сервера пока нечего отправить клиенту, а как только клиент получит новые данные сразу открывать новое соединение обычным XMLHttpRequest(). Двунаправленно без гемороя websocket, но это уже не http и я не пробовал.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: HTTP: взаимодействие клиента и сервера

Сообщение ARV »

Morroc писал(а):по умному называется SSE, но в этом случае мы получаем только инфу с сервера
то что надо! :beer:
SSE - это именно то самое, что я и искал!
проверю, насколько это будет работать с моим самописным сервером :)))

Добавлено after 56 minutes 12 seconds:
теперь бы еще понять, как со стороны сервера послать это сообщение... при помощи FreePascal...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: HTTP: взаимодействие клиента и сервера

Сообщение Morroc »

Экспериментировал на виндовом IIS/ ASP, там достаточно было не завершать скрипт страницы и делать response.flush для сброса буфера клиенту. Насколько это накладно не смотрел.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: HTTP: взаимодействие клиента и сервера

Сообщение ARV »

Morroc писал(а):response.flush
угу... знать бы, что это и откуда...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: HTTP: взаимодействие клиента и сервера

Сообщение Eddy_Em »

[uquote="ARV",url="/forum/viewtopic.php?p=3846797#p3846797"]безопасность пока вообще никак меня не волнует - процесс чисто технологический, безопасный по сути, не коммерческий. а вот что такое сессионный ключ, как он делается, куда и чем отправляется, и для чего служит - вот это я не понимаю совсем.[/uquote]
Тогда все вообще просто: никаких сессионных ключей не нужно. Просто рисуем веб-морду, которую можно показывать либо своим же демоном (но для этого придется от рута его запускать, что плохо), либо тем же nginx или апачем.
Для связи с железякой запускаем свой демон, который слушает определенный порт. А веб-морда при необходимости делает веб-запросы на этот порт.
Например, таким образом я сравнительно недавно сделал фокусировку нашего метрового телескопа. Пока все в локалке выполняется, решили не париться с авторизацией (а если кто из студентов будет вредить, по логам вычислим и набьем морду ☺). Веб-морда содержит необходимые поля ввода/вывода, а общается с демоном посредством простых веб-запросов (демон также принимает и запросы по нормальным сокетам - для возможности автоматизации работы). Собственно, кода той самой взаимосвязи - не так уж и много. Основное - работа с самой железкой.

Ну, а если нужна реальная асинхронность, то только веб-сокеты.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: HTTP: взаимодействие клиента и сервера

Сообщение ARV »

Eddy_Em писал(а):от рута его запускать
какие там еще руты?! Win10, на крайний случай, Win7.

в общем, я практически наметил себе путь решения... буду тупо выдавать в браузер страничку со скриптом, который будет каждые N-мс слать на сервер запрос, а сервер будет ему возвращать уже подготовленные атрибуты элементов странички, которые скрипт налету и будет менять - вот и получится обновление страницы без мерцаиня.

тупо, конечно, нерационально наверняка, но вряд ли что лучше я смогу освоить за разумное время - мне еще вспоминать HTML-верстку с CSS, и с нуля учиться работать с javascript... тут не до высоких технологий.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: HTTP: взаимодействие клиента и сервера

Сообщение ПростоНуб »

Eddy_Em, смысл сваливаться на уровень веб-сокетов, если есть стандартизованный Push API?
ARV, Здесь с примером, как на своем веб-сервере настроить push-уведомления
Ответить

Вернуться в «Интеграция с ПК»