2017-03-17 2 views
1

Wir wollen WAMP-Protokoll zu meinen Server-Client-Anwendungen verwenden. Ich habe Autobahn-js gefunden, die das Web Application Messaging Protocol (WAMP) implementiert. möchten wir QML für die Gestaltung des Frontend (Thin Client) und Ziel Android, IOS, Windows Mobile und Desktop-Plattformen verwenden. Seit Autobahn-js in Javascript geschrieben habe, dachte ich, es würde funktionieren. aber leider nicht.Wie funktioniert Autobahn-JS in QML?

Hier wird die folgende ich getan habe:

  • ich die Autobahn Js Bibliothek von Github heruntergeladen haben.

  • Ich habe alle Dateien in meinem QML-Projekt aufgenommen.

  • Import "lib/autobahn.js" als Autobhan

  • dann die Fehler QRC kommt: /lib/autobahn.js: 15: Reference: require nicht

    definiert

auf ich googeln kam zu wissen, dass „die require() Funktion eine Kernfunktion von node.js ist, die ein Teil des Motors ist. Es ist nicht nur wie das Fensterobjekt in Browser-basierter Javascript ist nicht etwas in der Javascript Sprache etwas sprachspezifische node.js ist eigentlich eine serverseitige JavaScript-Engine, die JavaScript-Dateien ausführt Amework, das Sie in eine andere Engine wie Qt laden könnten ". source.

Hier ist meine Frage:

  1. Wie kann ich/bauen, um die Autobahn Js-Bibliothek, so dass ich Autobahn in qml verwenden kann? was bewirkt, dass node.js Funktionen in qml laufen.

  2. Tough gibt es C++ - Implementierung, ich bin nicht davon überzeugt, den C++ - Wrapper in Qml zu verwenden, weil es von Dritten wie Boost abhängt.

  3. Ist es möglich, eine JS-Bibliothek zu erstellen, die von den Funktionen von node.js in QML abhängt? Lass es mich wissen, bitte. Dank

Zur Info: Ich bin mit Crossbar.io als Router

+0

AutobahnJS nicht auf etwas Node.js spezifisches abhängt - aber es war entweder für den Einsatz im Browser oder Node.js. entwickelt Eine QML-Umgebung mit eigener JavaScript-Engine wurde nicht berücksichtigt. – gzost

Antwort

0

Sie vier Optionen

  1. Änderung der Bibliothek haben, so dass es NodeJS spezifische hängt nicht
  2. die QML erweitern auf alles JavaScript-Engine, so dass es die nodejs spezifische Erweiterungen
  3. run nodejs über QProcess
  4. Blick auf einige der Projekte, die einen C/C++ Schnittstelle zum Einbetten NodeJS

jedoch zu schaffen versuchen, wenn die Protokoll Sie eine C/C++ Implementierung zu verwenden beabsichtigt hat, verwendet das ist wahrscheinlich der beste Weg, nach vorne.

0

Versuchen die browser version von AutobahnJS, nicht die NodeJS Version.

Wenn Sie nur WAMP innerhalb von QML benötigen, sollten Sie sich nicht mit C++ - WAMP-Bibliotheken (härter) beschäftigen.

Wenn Sie WAMP direkt zu Ihrem C++ Zeug (innerhalb Qt) sprechen wollen, gibt es mehrere C++ WAMP client libraries - aber ich bin mir nicht sicher, wie gut diese mit Qt verschmelzen. ZB AutobahnC++ ist Boost/ASIO basiert.

Allerdings gab es in letzter Zeit ein post berührend auf diesem ..

+0

Danke für Ihre Eingabe. Wie Sie gesagt haben, habe ich die [Browserversion] (https://github.com/crossbario/autobahn-js#browser-development) als js-Datei heruntergeladen und die js-Datei in das qml-Projekt aufgenommen und importiert. wenn ich es baue. Nicht implementierter Code ASSERT: "idom == referenceIdom" im Dateicompiler \ qv4ssa.cpp, Zeile 4959 – vishnu

+0

Dies scheint kein AutobahnJS-Problem zu sein, sondern ein Qt-Eins (das ASSERT stammt aus C++ - Code in Qt) - wir können ' t machen Sie nichts dagegen. Bug die Qt Jungs .. – oberstet

+0

oka.y Bevor das ist meine Prozedur korrekt? Ich habe gerade die js-Datei heruntergeladen und enthalten. Ich habe es nicht gebaut, weil ich nicht weiß wie. Danke – vishnu