Подскажите простую реализацию взаимодействия между веб-сайтом и ПК

Приветствую всех неруко*опых и старающихся такими не быть!
Подскажите, кто какие методы знает, для реализации моментального взаимодействия между веб-сайтом и ПК на Windows-7. Желательно самые простые и надежные методы. Интересно узнать сколько их (основных).


Суть:

Имеется ПК на Windows-7 и страница веб-сайта, на которой расположены 2 кнопки.

1. При нажатии на первую кнопку, на мой ПК будет передаваться единоразовая (одна) команда (даже если кнопка и дальше после нажатия удерживается нажатой). При повторном нажатии команда передается снова, и т.д. На стороне моего ПК при каждом нажатии на ту кнопку, должен запускаться файлик mp3 и звучать 1 гудок “beep”.

2. При нажатии на вторую кнопку и удержании ее нажатой, на мой ПК отправляется повтояющаяся серия одинаковых команд зацикленно с промежутками в 0.1 секунды, пока кнопку не отпустишь. На стороне моего ПК должен запускаться файлик mp3 и звучать “beep-beep-beep-beep-beep-beep-beep-beep”.

После проигрывания каждого “beep” в ответ с ПК на сайт отправляется ответ-подтверждение о проигрывании каждого “beep” - что-то типа пинга, получив который на сайте рядом с кнопкой будет “загораться” индикатор (короткая вспышка). На каждый “beep” одна вспышка.

Скорость взаимодействия между нажатием кнопок и запуском mp3 на ПК нужна максимально приближенная к реал-тайм, без задержек.

Как можно реализовать вышеописанное?


З.Ы. Я не программист, языков программирования не знаю, кроме немного HTML, поэтому прошу дать хоть какую-либо инфу на “максимально литературном” русском языке, понятном человеку, далекому от понятий маршрутизация/порты/java/ и т.д…

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

З.Ы.Ы Мамкиным приколистам и “всезнайкам”-подкольщикам отдельный привет и досвидос с последующим игнором.

Изучать языки программирования и очень обширные темы с нуля нет ни желания, ни времени.
Буду очень благодарен всем, кто сможет дать мне максимально развернутые советы! А кто осилил многабукаф и прочел до конца - капитальный красавчик!))

А что за сайт? Он во внутренней сети или что?
Какая цель, зачем это вообще?

Обычно надо наоборот, с ПК на сайт.

Если они не в одной сети, то может быть сложно достучаться до ПК.

Это просто база данных, для хранения данных.

Alex P., нет, не во внетренней сети. Во всемирной.
“Beep” я привел как пример, дабы не забивать вам голову доп инфой. Вместо “Beep” с моего ПК будет отдаваться команда на 3Д печать и доп. опции. Это не суть.
Почему может быть сложно достучаться до ПК, если он постоянно подключен к интернету? Я поэтому и склоняюсь к возможной версии на основе Телеграм или другого стабильного мессенджера по обмену мгновенными сообщениями отправляемых туда-сюда, и преобразуемых на месте в ту или иную команду.

Потому что достучаться можно только к роутеру, а не самому компу. Надо настроить проброс нужного порта на роутере и т.д.
Еще IP может меняться, но можно использовать какой-нибудь сервис DynDNS.
И белые vs серые IP.

https://help.keenetic.com/hc/ru/articles/213965789-В-чем-отличие-белого-и-серого-IP-адреса-

https://help-wifi.com/poleznoe-i-interesnoe/ddns-dinamicheskij-dns-na-routere-chto-eto-kak-rabotaet-i-kak-polzovatsya/

Благодарю за советы, но тема с роутером мне кажется может быть не совсем стабильной. К тому же, к моему WIFI-роутеру кроме нужного ПК, подключены еще несколько ПК и устройств. Это не будет помехой?
А что если задействовать что-то типа базы данных на общем веб-сервере или на хостинге, где установлен сам сайт?
ПК и веб страница будут записывать команды на сервер каждую 0.1 сек и брать инфу оттуда же (обмениваться командами).
Так получится? Разве не проще?

А не опасно такое разрешать всем желающим из всемирной сети? :crazy_face:
Как я понял авторизации нет раз только HTML.

Нет, если только к одному надо обращаться.

Да, так проще.
Тут важнее даже не БД, а скрипт на сервере сайта (на PHP, например), который будет куда-то писать данные (команды) и по другому запросу (например, при запросе к http://мойсайт.ru/commands.php) отдавать их.

То есть кнопка на сайте вызывает скрипт для записи команды, а программа на ПК каждые 0.1 сек обращается ко второму скрипту для проверки наличия новых команд.

Авторизация есть и онлайн модерация/контроль тоже.
Команды должны находиться в БД в зашифрованном виде, чтобы их мог давать только тот юзер, у кого в данный момент имеется доступ к кнопкам. Или же для каждой сессии создавать временный скрытый раздел с рандомным именем, типа:

http://мойсайт.ru/command853983834573998893384.php)
http://мойсайт.ru/command256869697897954937273.php)
http://мойсайт.ru/command494874758374747577611.php)
и т.д.

Разве не существует уже готовых решений со скриптами?
А то мне кажется, мы тут вел сейчас пытаемся сконструировать))

Ну так это уже тогда не “немного HTML” )

к БД не должно быть доступа извне напрямую, только у скриптов на том же сервере сайта.
Тогда можно в скриптах просто проверять авторизацию стандартными способами через сессию (куки) как на любом сайте.
У команды писать чья она и в скрипте сравнивать с данными из сессии.
Для ПК особый админский юзер с доступом ко всем командам.

Вполне возможно, что нет. Это же не типовая задача типа сделать интернет-магазин.

Alex P., пасибо за внимание. Пока что буду искать готовые бесплатные решения, но если кто-то изъявит желание написать скриптик, пишите мне пожалуйста личные сообщения, обсудим цены и т.д. Дорого не потяну, спешки нет.
А от дельных советов в данной теме, конечно же, не откажусь))

Если имеется ввиду взаимодействие между desktop-приложением и веб-сайтом в реальном времени, то один из самых простых способов - использовать вебсокеты. Node.js является одним из самых простых решений, потому что есть бесплатный Heroku. Библиотеку socket.io, которая является обёрткой над WebSockets и упрощает работу с вебсокетами. На стороне клиента один из самых простых вариантов сделать Desktop приложение на C#, в котором есть поддержка вебсокетов из коробки, а для его большего упрощения можно взять реализацию socket.io для C# в виде пакета, который устанавливается через NuGet: Создание простейшего чата с клиентом на консольном C# и с сервером на Node.js/socket.io/JavaScript. Бонус - WPF-клиент

Getting Started on Heroku with Node.js | Heroku Dev Center - это официальная пошаговая инструкция, как разворачивать сервер на Heroku. Если не знакомы с Node.js, то можно начать с этого замечательного руководства: Руководство по Node.js - METANIT.COM Если не знакомы с C#, то можете стартовать на том же Metanit: Язык программирования C# и платформа .NET - METANIT

1 лайк

Это же скорее оптимизация для случаев когда не хватает обычного HTTP.
Типа чата с кучей участников.

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

Вот здесь написано, что нужно моментально взаимодействие между EXE и сервером:

Если нужно будет двустороннее взаимодействие, то самый быстрый способ - вебсокеты, но с вебсокетами напрямую работать сложнее, чем с помощью socket.io, тем более, что для C# есть пакеты для работы с socket.io. На самом деле socket.io на стороне клиента и сервера очень сильно упрощает взаимодействие. Нужно знать только: emit() и broadcast() и функции обратного вызова. У этого способа есть намного больший потенциал для развития приложения. Моё дело предложить, а будет ли автор темы его использовать - это его дело.

думаю для

0.1 сек (или даже пару сек) задержки не так критично.


С вебсокетами автору все равно нужен HTTP сервер, БД для авторизации и т.п., а не одни вебсокеты.

Я бы всё равно делал на C#, Node.js и socket.io. На бесплатном Heroku есть базы данных. На Node.js можно сделать HTTP сервер. А на сокетах можно развивать даже это приложение интереснее, чем просто HTTP. Можно даже чат очень просто реализовать. На официальном сайте есть пример готового чата в качестве вводного туториала: https://socket.io/get-started/chat/

Иван, благодарю за интересные мысли. Вот это мне и нужно было - побольше инфы с разжевывнием и конкретными ссылками для дальнейшего изучения.
Вот только я хочу реализовать все прямо на странице сайта. Изначально была задумка написать приложение для Android/iOS, но это дополнительная делюга - скачать и установить програмку, тем более мало кто любит скачивать и устанавливать себе всякие приложения…
Подскажи, из того что ты написал выше, это все относится только к приложению или что-то оттуда можно использовать для реализации процесса прямо на странице сайта?
(чат не нужен).

Чат - это просто учебный пример. Как раз на нём показано, как обмениваться сообщениями между клиентом и сервером (или между клиентами через сервер). В этом вводном туториале показан сервер на Node.js, а клиент в виде веб-клиента: https://socket.io/get-started/chat/ Веб-клиент пишется один раз и он будет запускаться на всех ОС, платформах (desktop, mobile) в один клик. Делайте, как вам проще. Если не хотите изучать Node.js, то продолжайте делать на PHP. Я изучал PHP когда-то давно, а теперь изучаю Node.js и лично мне Node.js кажется намного проще и мне он больше нравится. О вкусах не спорят, просто лично мнение.

Я все же пока больше склоняюсь к PHP. Хочется как всегда быстрее, проще и доступнее, а Node.js, C# и socket.io - для меня абсолютно темный лес, из которого чтобы мне выбраться придется потратить не один месяц…
Посоветуйте, с чего мне начать, для реализации на PHP?
Я выше описывал приблизительную схему с обменом инфой на сервере, как я это представляю, но на деле я не в курсе, из каких конкретно компонентов все должно состоять и как обычно подобные схемы работают.
Нужна ли база данных для обмена командами? Если да, то какую лучше использовать?
Сокеты, как я понял, для PHP не подойдут? Только для приложения?

Любую, MySql, Postgre, …

Через PDO код почти одинаковый.

http://getjump.github.io/ru-php-the-right-way/#базы_данных
https://phpbestpractices.org/#mysql

http://phpfaq.ru/newbie/na_tanke

в той схеме да, но она видимо нужна и для

чтобы пользователей хранить, выводить команды модераторам.

Для самого обмена хватит просто двух скриптов и БД, как я выше писал. Ну и программа на любом языке (C#, …) с любым HTTP клиентом на ПК.

Но раз нужна авторизация, модерация и т.д., то видимо всё не так просто, и скорее всего для сайта лучше взять фреймворк типа Laravel. Он упрощает многое, сложнее сделать что-то плохо/не безопасно. Например, авторизация там уже готова.
Там хорошая документация https://laravel.com/docs/6.x и видео-уроки https://laracasts.com/series/laravel-6-from-scratch, но на английском, не знаю есть ли что-то хорошее на русском (в курсах Хекслета есть немного по нему, но это наверно не самый простой вариант чтобы просто сделать, а не становиться проф. программистом).


Хостинг — упомянутый тут Heroku проще всего: не надо самому настраивать VPS, но и не имеет недостатков shared хостингов. И даже бесплатно если мало нагрузки (но если не хватит бесплатного, то дороже других вариантов).
Разворачивать туда сайт на Ларавеле примерно так: https://github.com/AlexP11223/CatToDo#heroku-deployment

Не читал всю тему.
Могу предложить использовать почтовый клиент. Например, MS Oulook можно настроить таким образом, чтобы он при получении письма выполнил некую команду.

А письмо это отправить с сайта на заданный адрес.