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

Так тут наверное пора разделить тему в опенсорц?

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

Вы не поняли, задание. Нужно, чтобы на сайте было две кнопки:

Я попробую объяснить, как я понимаю это задание. Имеется страничка в интернете с двумя кнопками. Имеется ПК. Для примера, код на ПК, который запустит MP3 файл или beep. Я предложил упростить, чтобы приложение на ПК принимало по нажатию на кнопку текстовое сообдение.

Вы не написали в этом варианте решения пункта выше, что проще использовать для создания EXE, который будет принимать текст команды с сайта по нажатию кнопки на сайте. Я считаю, что один из самых простых вариантов взять для создания EXE язык C# и WinForms.

Я отвечаю по теме. Человек очень хорошо и просто сформулировал задачу. Я пытаюсь доказать, что эту задачу проще всего решить с помощью C# и Node.js. Если кто-то хочет продемонстрировать, что есть вариант проще, то пожалуйста. Можете на Qt сделать EXE, а веб сайт на PHP. Главное, давайте, чтобы был реальный результат в конце, в видео рабочего примера с кнопкой и EXE, а не бла-бла.

Теперь задача соединить EXE и локальный сервер. Как добавить в C# поддержку библиотеки socket.io, которая даёт возможность намного проще работать с веб-сокетами? Есть множество разных пакетов на NuGet. Я предлагаю поставить SocketIoClientDotNet. Поставим задачу, чтобы сервер вывел сообщение о соединении Desktop-клиента. Предполагается, что вы знаете, как устанавливать пакеты через NuGet.

Решения делается в одну строчку. Пишем ещё в конструкторе формы:

        public Form1()
        {
            InitializeComponent();

            var socket = IO.Socket("http://localhost:3000");

Не забываем добавить:

using Quobject.SocketIoClientDotNet.Client;

Теперь если запустить сервер и Desktop-клиента, то происходит соединение и в консоль сервера выводится:

Client connected

Это пример, который идёт с данным пакетом для C#:

using Quobject.SocketIoClientDotNet.Client;

var socket = IO.Socket("http://localhost");
socket.On(Socket.EVENT_CONNECT, () =>
{
	socket.Emit("hi");
	
});

socket.On("hi", (data) =>
	{
		Console.WriteLine(data);
		socket.Disconnect();
	});
Console.ReadLine();

Теперь ситуация следующая. Мы изучили, как создать GUI-элемент TextBox на Desktop с помощью WinForm. А так же изучили, как создать GUI-элемент “button” на Web с помощью HTML. Оба клиента соединяются с сервером. Сервер пока локальный, но развернуть его не проблема на бесплатном Heroku. Осталось найти самый простой для понимания способ, имея под рукой изученное, как соединить два клиента: Desktop и Web. У меня есть идея - сохранять все сокеты в списке на сервере, так же с помощью пакета shortid для Node.js будет создаваться уникальный идентификатор для каждого клиента. Один клиент может переслать свой ID другому и эти клиенты могут обмениваться командами. Такой способ можно использовать в кооперативных играх. Например, хочешь поиграть другом в шашки или морской бой, который сам написал и можешь выбрать - играть через Desktop-клиент или через Web-клиент.

shortid - один из самых простых вариантов генерации идентификатора для клиента на сервере. Устанавливается командой:

npm i shortid

Используется так:

const shortid = require('shortid');
 
console.log(shortid.generate());
// PPBqWA9

Так я и говорил это.

А он и не нужен если веб-сервер сразу на ПК.
Просто сразу запустить из PHP или Node.js что угодно.
exec в РНР, child_process в Node.js.

Ага, только потом оказалось, что на самом деле всё не так просто и нужна авторизация, модерация и т.п.:slight_smile:

Веб-сервер данного сайта тоже находится на вашем ПК? Я всегда думал, что для сайтов находят хостинг. Как я понимаю, что по первому пункту задания сайт находится в интернете, а не запущен локально. Должна быть ссылка на сайт. Неудобно держать сайт на компьютере, потому что нужно чтобы компьютер был запущен постоянно. Или свой отдельный сервер собирать. Сейчас полно возможностей где можно захостить сервер для сайта.

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

Обычно да, но тут же надо отправлять команды на ПК автора, так что причины брать сторонний хостинг типа “больше доступность” (включен 24/7, резервное питание, железо и каналы связи, …) становятся не актуальны.

Но я бы на месте автора всё равно бы реализовал его первоначальную задумку в том виде этого короткого упражнения с веб-страничной, кнопкой и MP3. Для меня это интересное и поучительное упражнение. Даже на таком простейшем упражнении я получил важный для меня опыт. У меня какая-то странная ошибка на ровном месте. Почему-то мой простейший сервер иногда падает, а почему понять не могу, но это только добавляет задору разобраться в этой фантастической ситуации.

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

CommandFromSite_WinFormsCSharp_006

CommandFromSite_WinFormsCSharp_007

Так еще и время задержки уменьшается.

Приветствую, господа Знатоки! Извиняюсь за отсутствие, был очень занят в эти дни.

Благодарю всех за советы, но изучать программировать у меня нет никакого желания. Мне просто пришла идея интересного проекта, а для реализации технической части я хочу выяснить возможные варианты сАмой простой и надежной реализации поставленной задачи, найти человека, кто в этом шарит и предоставить это ему. Пусть каждый занимается своим делом, как говорится))

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

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

Схему я представляю примерно так:

На сайте юзеры видят онлайн-очередь из других юзеров и следующее свободное время для того чтобы встать в очередь. Очередь обновляется каждую секунду. Даже если очереди нет, минимальное время до начала сессии = 30 минут (для модерации).

Если юзера все устраивает, он создает заявку и оплачивает услугу для использования кнопок в течение определенного промежутка времени, после чего попадает в очередь. Выбирает сбособ связи и время, за сколько минут до его очереди его оповестить о готовности (5-30 мин). Оставляет контакт для связи. Ему выдается уникальный одноразовый ключ (пароль).

Заранее юзеру приходит автоматическое оповещение, и в указанное время он на сайте вводит в поле выданный ключ, после чего именно для него активируются кнопки.

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

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

Желательно, конечно, не прибегать к скачиванию Телеграм и использовать только страницу сайта.
Это возможно? Подскажите, пожалуйста, кто разбирается в Телеге?

Если нужно только отправить сообщение своему боту и не нужно получать телеграм юзера, то почему б нет.

Только я не уверен, что телеграм тут что-то упростит по сравнению с сокетами и другими вариантами.

Все способы тут не особо сложные.

Если ПК онлайн 24/7, то проще всего мой последний вариант про сервер на самом ПК.

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

Благодаря одноразовому коду доступа, юзерам можно будет отказаться от регистрации, оставив только контакт для связи. Никто не любит регистрации.

А этот вариант вообще самый простой на мой взгляд. Разве нет? Назначить кнопке №1 отправку письма при нажатии с темой “123”, а кнопке №2 - с темой “456”.

На компе установить почтовый клиент, сделать проверку входящей почты каждую секунду. И при получении письма с темой “123” запускать на компе файл №1, а при получении письма с темой “456” запускать на компе файл №2.

Только у меня возникло 2 вопроса, подскажите пожалуйста кто знает HTML код для следующих кнопок:
А) Отправка 1 письма на мой е-майл при одном нажатии и удерживании.
Б) Отправка 5 писем в секунду на мой е-майл при нажатии и удерживании второй кнопки нажатой.

Тема Как создать кнопку в HTML для отправки сообщения на емайл?

Да как угодно. Но тут другой вопрос. Знающему человеку тут работы не так много, но объяснять вам что к чему и почему это та еще проблема. Почему не обратится на фриланс и заплатить деньгу за готовое решение. Тем более что

Так он так и хотел