由多个用户在Web浏览器界面访问Qt应用程序

问题描述 投票:0回答:2

我有Qt中的一些C ++和Python集成模块(机器学习,信号处理等)具有以下基本特性实现的应用:

  1. 可以平行内部多线程模块(QThread
  2. 提供像通过Qt控件,例如,not send imagesQwtPlotZoomerQwtPlotMarkerQGraphicsRectItem 2D图(QwtPlotCurve)可视化特性。

我的目标是通过与多个用户,观察者的web浏览器应用提供服务器运行的应用程序中已实现的应用特性。我做了一些研究,并发现以下链接(Wtlinklinklink)一些可能的解决方案(Qt的WebGL的,QT的大会,link),但作为一个没有经验的Web应用程序开发人员,我不能完全肯定它的这些或替代的和优选的C++模块使用。

能否请您提供巫Web开发库的一些建议和指导使用基于类的成熟度,功能特性,易用性和成熟度(灵活性Qt控件),但也考虑到我的应用程序的特点是什么?

先感谢您。

PS:我想提一提,如果它帮助我用C很有经验++和Python的不是Java和Javascript。

c++ qt web-applications qthread qwt
2个回答
1
投票

如果你想使一个应用程序,可以服务器的多个客户端使用Qt,有3个常规选项:

The Qt WebGL Platform Plugin

这其中将创建一个纯服务器双面执行和简单地在浏览器远程显示GUI。这似乎是最简单的方法,但有一些限制和缺点:

  1. 只有一个客户端可以在同一时间内servered。这可以通过创建一个“产卵”的应用程序,等待进来的流量,并开始每连接的客​​户端的新实例被合作周围。然而,这需要相当长的一段额外的逻辑,是资源的重
  2. 高网络负载。特别是互动的GUI可以先草拟一值为40Mbit / s的每个客户端!
  3. 无客户端逻辑。这是根本不可能在此设置添加客户端代码

总之这种方法从未被设计用于这种用途的情况。它是指能够用作图形用户界面的无头装置或maintanance访问。我不建议使用它。

Server Application + Qt for WebAssembly

一分为二的应用:服务器应用程序和客户端应用程序。使用Qt的WebAssembly客户端应用程序。两者之间的通信可以与QtWebSocketsQtRemoteObjects或其他网络的IPC解决方案来完成。

这使您不必只使用一种语言上的优势,并使得IPC很容易,因为双方使用Qt。此外,测算重任务中WASM有效得多。但是Qt的用于WebAssembly仍处于技术预览版状态,因此尚未稳定。例如,它不支持多线程或TCP / IP套接字呢。此外,并非所有enddevices支持WASM截至目前。

Server Application + HTML WebApp

最后一种方法是混合技术。使用Web框架状Cutelyst创建一个基于Qt的网络服务器和服务于传统的HTML网站与它。您可以使用QtWebChannel轻松地将Qt的服务器和HTML客户端之间传输数据。


一个WASM和HTML客户端之间的决定权在你。使用WASM可能会容易些,但有它自己的challanges。我会建议你做一些更多的研制上都。然后创建两个解决方案的一些测试应用程序并加以比较,找出哪一个适合您的需求最好的


0
投票

真的,我觉得只有一个主要的事情:如果它开始崩溃,你可能需要其中之一:

https://doc.qt.io/qt-5/qmutex.html

至于网页脚本,我倾向于使用QWebEnginePage::runJavaScript()提供的警告,这是不容易的。其原因是,是从C ++注入的JavaScript时,你正在处理从C ++,这使得时间和代码注入的点非常困难单线程线性环境。它基本上是一个竞争条件地狱,我结束了发展serviceable model只是有运行,直到取得预期结果的脚本。

https://doc.qt.io/qt-5/qwebenginepage.html#runJavaScript

这意味着,这是很好的任务委派给强大的JavaScript应用程序。

最后,因为你是使用Qt的工作,这是好事,制定了“创建每件事情都作为API”的心态。

© www.soinside.com 2019 - 2024. All rights reserved.