【发布时间】:2020-08-11 15:44:11
【问题描述】:
Qt Quick WebGL Streaming 是一种技术,任何 Qt Quick(“QML”)应用程序都可以通过该技术向通过 Web 浏览器连接的用户显示其用户界面。您所要做的就是在主机上像这样启动应用程序:
./my-qml-program -platform webgl:port=8080
这可行,但受设计限制,因此只能同时连接一个用户并查看用户界面。为此,他们引用了用户输入、查询 GPU 和安全性 (source) 方面的问题。
最初,Qt 开发人员希望通过从一个进程提供多个窗口来支持 WebGL 流中的多个用户:
如何支持并发?就像每个连接都有自己的 QGuiApplication,还是只有一个? […] 你创建了一个 QGuiApplication 和不同的窗口。当新客户端连接到 HTTP 服务器时,会有一个信号通知。当信号发出时,您将创建一个不同的 QWindow。窗口是独立的(source)
然而,现在,开发人员希望通过为每个用户启动一个进程来支持 WebGL 流中的多个用户。
- 我们正在努力将 HTTP 服务器与插件分离
- 将提供专用的 HTTP 服务器应用程序
- 不是在同一个进程中运行所有用户,而是为每个用户生成一个新进程
- 新进程将处理 Web 套接字
(source)
“将 HTTP 服务器与插件解耦”意味着将其替换为 QHttpServer:
我已经为这个 [QHttpServer] 模块计划了一些用例:更改 WebGL 插件中当前的嵌入式 Web 服务器(和 WebSockets),以便基于插件轻松创建自己的自定义解决方案。 (source)
到目前为止,尚未实施任何解决方案。在 Qt WebGL 流中自己实现对多用户的支持的最简单方法是什么,而无需等待 Qt 实现这一点?
【问题讨论】: