Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

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

#cpp #веб_программирование


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

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

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

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


Ответы

Ответ 1



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

Ответ 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

Комментариев нет:

Отправить комментарий