Как заставить Autobahn-JS работать в QML?

Мы хотим использовать протокол WAMP для моих серверных клиентских приложений. Я нашел Autobahn-js, который реализует протокол обмена сообщениями веб-приложений (WAMP). Мы хотели бы использовать QML для разработки внешнего интерфейса (тонкого клиента) и целевых платформ Android, IOS, Windows Mobile и настольных компьютеров. Поскольку Autobahn-js написан на Javascript, я думал, что это сработает. но, к сожалению, это не так.

Вот следующее, что я сделал:

  • Я скачал библиотеку Autobahn Js с Github.

  • Я включил все файлы в свой проект QML.

  • импортировать "lib/autobahn.js" как AutoBhan

  • Затем появляется ошибка qrc:/lib/autobahn.js:15: ReferenceError: require не определен

после поиска в Google я узнал, что "функция require() является основной функцией node.js, которая является частью движка. Это не что-то специфичное для языка, как объект окна в Javascript, основанном на браузере, это не то, что в Javascript language. node.js на самом деле представляет собой серверный движок JavaScript, который выполняет файлы JavaScript. Это не среда, которую вы могли бы загрузить в другой движок, такой как Qt ". источник.

Вот мой вопрос:

  1. Как я могу сделать / собрать библиотеку Autobahn Js, чтобы я мог использовать autobahn в qml? который фактически делает функции node.js работающими в qml.

  2. Несмотря на реализацию C++, я не уверен в использовании оболочки C++ в qml, потому что это зависит от сторонних разработчиков, таких как Boost.

  3. Можно ли сделать библиотеку JS, которая зависит от функций node.js в QML? Пожалуйста, дайте мне знать. Спасибо

К вашему сведению: я использую Crossbar.io в качестве маршрутизатора

2 ответа

Попробуйте версию браузера AutobahnJS, а не версию NodeJS.

Если вам нужен только WAMP внутри QML, не беспокойтесь о библиотеках C++ WAMP (сложнее).

Если вы хотите поговорить WAMP напрямую с вашим C++ материалом (в Qt), есть несколько клиентских библиотек C++ WAMP - однако я не уверен, насколько хорошо они сочетаются с Qt. Например, AutobahnC++ основан на Boost/ASIO.

Тем не менее, недавно был пост, касающийся этого..

У вас есть четыре варианта

  1. изменить библиотеку так, чтобы она не зависела от чего-либо конкретного nodejs
  2. расширить механизм JavaScript QML, чтобы он предоставлял специфичные для nodejs расширения
  3. запустить nodejs через QProcess
  4. посмотрите на некоторые из проектов, которые пытаются предоставить интерфейс C/C++ для встраивания nodejs

Однако, если протокол, который вы намереваетесь использовать, имеет реализацию C/C++, использование этого, вероятно, является лучшим способом продвижения вперед.

Другие вопросы по тегам