1

我们想在我的服务器客户端应用程序中使用 WAMP 协议。我找到了实现 Web 应用程序消息传递协议 (WAMP) 的Autobahn-js 。我们想使用 QML 来设计前端(瘦客户端)并针对 Android、IOS、Windows Mobile 和桌面平台。由于 Autobahn-js 是用 Javascript 编写的,我认为它会起作用。但不幸的是,它没有。

以下是我所做的:

  • 我已经从 Github 下载了Autobahn Js库。

  • 我已将所有文件包含在我的 QML 项目中。

  • 将“lib/autobahn.js”导入为 AutoBhan

  • 然后出现错误 qrc:/lib/autobahn.js:15: ReferenceError: require is not defined

谷歌搜索后我才知道“require() 函数是 node.js 的核心函数,它是引擎的一部分。它不是特定于语言的东西,就像基于浏览器的 Javascript 中的窗口对象不是 Javascript 中的东西语言。node.js 实际上是:一个服务器端的 JavaScript 引擎,它执行 JavaScript 文件。它不是一个框架,你可以加载到像 Qt 这样的另一个引擎中。资源。

这是我的问题:

  1. 如何制作/构建 Autobahn Js 库,以便可以在 qml 中使用高速公路?这实际上使 node.js 函数在 qml 中运行。

  2. 尽管有 C++ 实现,但我不相信在 qml 中使用 C++ 包装器,因为它依赖于像 Boost 这样的第三方。

  3. 是否可以在 QML 中制作依赖于 node.js 函数的 JS 库?请告诉我。谢谢

仅供参考:我使用Crossbar.io作为路由器

4

2 回答 2

0

试试 AutobahnJS 的浏览器版本,而不是 NodeJS 版本。

如果您只需要 QML 中的 WAMP,请不要使用 C++ WAMP 库(更难)。

如果您想将 WAMP 直接与您的 C++ 内容(在 Qt 中)进行交流,那么有多个 C++ WAMP 客户端库- 但是,我不确定这些与 Qt 的融合程度如何。例如 AutobahnC++ 是基于 Boost/ASIO 的。

但是,最近有一个帖子涉及到这个..

于 2017-03-18T12:51:16.910 回答
0

你有四个选择

  1. 更改库,使其不依赖于任何特定于 nodejs 的内容
  2. 扩展 QML JavaScript 引擎,以便它提供 nodejs 特定的扩展
  3. 通过运行nodejsQProcess
  4. 查看一些尝试为嵌入 nodejs 提供 C/C++ 接口的项目

但是,如果您打算使用的协议具有 C/C++ 实现,那么使用它可能是最好的方法。

于 2017-03-18T08:57:02.527 回答