Если вы хотите создать приложение, которое может обслуживать несколько клиентов с помощью Qt, есть 3 основных варианта:
Плагин платформы Qt WebGL
Это создаст чисто серверную сторонуреализации и просто отображать графический интерфейс удаленно в браузере.Это кажется самым простым подходом, но имеет несколько ограничений и недостатков:
- Одновременно может обслуживаться только один клиент.Эту проблему можно обойти, создав приложение «spawner», которое ожидает поступления трафика и запускает новый экземпляр для каждого подключенного клиента.Однако это требует некоторой дополнительной логики и требует значительных ресурсов
- Высокая нагрузка на сеть.Особенно интерактивные графические интерфейсы могут использовать до 40 Мбит / с на клиента !
- Нет логики клиента.Просто невозможно добавить клиентский код в этой настройке
Все вместе этот метод никогда не был разработан для такого случая использования.Он предназначен для использования в качестве графического интерфейса для безголовых устройств или доступа для технического обслуживания.Я бы не рекомендовал бы его использовать.
Серверное приложение + Qt для WebAssembly
Разделите ваше приложение на две части: серверное приложение и клиентское приложение.Клиентское приложение с Qt для WebAssembly.Связь между ними может осуществляться с помощью QtWebSockets
, QtRemoteObjects
или других решений Network-IPC.
Это дает вам преимущество в использовании только одного языка и делает IPC очень простым, поскольку обе стороныиспользуйте Qt.Кроме того, в WASM гораздо более эффективные задачи для вычислений.Однако Qt для WebAssembly все еще находится в техническом состоянии предварительного просмотра и, следовательно, еще не стабилен.Например, он пока не поддерживает многопоточность или сокеты TCP / IP.Кроме того, не все конечные устройства поддерживают WASM на данный момент.
Серверное приложение + HTML WebApp
Последний подход заключается в смешивании технологий.Используйте Web-Framework, такой как Cutelyst , чтобы создать веб-сервер на основе Qt и обслуживать с ним классический веб-сайт HTML.Вы можете использовать QtWebChannel для простой передачи данных между вашим Qt-сервером и HTML-клиентом.
Решение между WASM и HTML-клиентом остается за вами.Использование WASM может быть проще для вас, но у него есть свои проблемы.Я бы порекомендовал вам сделать еще несколько исследований на обоихЗатем создайте несколько тестовых приложений для обоих решений и сравните их, чтобы выяснить, какое из них лучше всего соответствует вашим потребностям