Веб доступ к десктопному приложению

155
04 августа 2021, 02:00

Объясню суть проблемы: есть десктопное графическое приложение ,написанное на с++, появилась срочная необходимость доступа к нему через web браузер, а именно чтобы сервер, при обращении к нему, поднимал на своей стороне эту программу и достаточно того чтобы он каким-либо способом передавал на сторону клиента вывод самого приложения.

Платформа: windows; графический API: OpenGL | GLFW;

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

(Времени переписать код на другой язык попросту нет)

Answer 1

Поднимаете VNC сервер, потом поднимаете сервер noVNC, который транслирует протокол VNC в HTML5. Собственно, на этом вопрос "показать десктопное приложение на вебе" заканчивается.

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

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

Второе зависит от политики предоставляемого сервиса.

Третий вопрос таки уже сильно зависит от используемой ОС и серверной платформы.

Answer 2

Это конечно не панацея, однако, Взгляните на emscripten

Цитата из википедии

Целью развития проекта Emscripten является создание инструмента, который позволил бы выполнять в Интернете код независимо от языка программирования, на котором этот код написан.

Emscripten позволяет осуществить компиляцию байткода LLVM в код на языке JavaScript, который может быть выполнен внутри веб-браузера. Байткод LLVM может быть сгенерирован с исходных текстов C / C ++ с помощью компиляторов llvm-gcc и clang, а также из кода на другом языке программирования, для которого существует LLVM-фронтенд.

Emscripten поддерживает трансляцию вывода библиотеки SDL через canvas, а также оказывает поддержку OpenGL через WebGL.

Вот примеры, доступные в сети:

DOOM3

Broadway.js - H264 кодек

https://homepages.loria.fr/BLevy/GEOGRAM/vorpaview.html

https://homepages.loria.fr/BLevy/GEOGRAM/geogram_demo_Delaunay2d.html

READ ALSO
Вывести в консоль фигуру из цифр

Вывести в консоль фигуру из цифр

Пользователь вводит размер фигуры сам и программа печатает в консоли прямоугольник следующим образом:

150
std::variant внутрянняя цикличность(JSON)

std::variant внутрянняя цикличность(JSON)

Захотелось мне парсер сделать для JSON

163
Функция не возвращает ссылку

Функция не возвращает ссылку

Есть следующая функция, она должна возвращать ссылку на значение ключа, если ключ такой существует в словаре, иначе выбрасывать исключение,...

158
Подключение файлов в C++

Подключение файлов в C++

Иногда работаю с IDE на Андроиде (в основном Dcoder)Как можно подключить (и можно ли вообще) заголовочный либо любой другой файл средствами языка,...

161