【问题标题】:How to make Autobahn-JS work in QML?如何使 Autobahn-JS 在 QML 中工作?
【发布时间】:2017-03-17 13:53:44
【问题描述】:

我们想在我的服务器客户端应用程序中使用 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 未定义

通过谷歌搜索,我了解到“require() 函数是 node.js 的核心函数,它是引擎的一部分。它不是特定于语言的东西,就像基于浏览器的 Javascript 中的窗口对象不是什么东西一样在 Javascript 语言中。node.js 实际上是:一个服务器端的 JavaScript 引擎,它执行 JavaScript 文件。它不是一个可以加载到像 Qt 之类的另一个引擎中的框架。 source.

这是我的问题:

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

  2. 虽然有 C++ 实现,但我不相信在 qml 中使用 C++ 包装器,因为它依赖于 Boost 等第三方。

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

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

【问题讨论】:

  • AutobahnJS 不依赖于任何特定于 Node.js 的东西 - 但它是为在浏览器或 Node.js 中使用而开发的。没有考虑拥有自己的 JavaScript 引擎的 QML 环境。

标签: javascript node.js qml autobahn autobahnjs


【解决方案1】:

你有四个选择

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

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

【讨论】:

    【解决方案2】:

    试试 AutobahnJS 的 browser version,而不是 NodeJS 版本。

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

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

    然而,最近有一个post 触及这个..

    【讨论】:

    • 感谢您的意见。正如你所说,我已经将browser version 下载为 js 文件,并在 qml 项目中包含并导入了 js 文件。当我建造它时。未实现的代码。断言:文件 compiler\qv4ssa.cpp 中的“idom == referenceIdom”,第 4959 行
    • 这似乎不是 AutobahnJS 问题,而是 Qt 问题(ASSERT 来自 Qt 中的 C++ 代码)——我们对此无能为力。给 Qt 小伙伴们带来错误 ..
    • oka.y 在此之前我的程序是否正确?我刚刚下载了 js 文件并将其包含在内。我没有建立它,因为我不知道如何。谢谢
    • 是的,从autobahn.s3.amazonaws.com/autobahnjs/latest/autobahn.js 下载并包含它(不要自己构建它......不需要)。这是(非最小化、未压缩的)浏览器版本。它适用于所有浏览器(甚至 IE10 .. 在 IE9 上具有后备功能)。如果它在 Qt/QML 嵌入式浏览器引擎中不起作用,那不关我们的事。
    • 非常感谢您的确认。如果这不适用于 qml,那么我会考虑 HTML5 作为我的前端。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 2019-08-27
    相关资源
    最近更新 更多