diff options
author | Milian Wolff <milian.wolff@kdab.com> | 2014-01-10 14:21:05 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-06 16:32:20 +0100 |
commit | 54f66cc7a1e17155e90a1d3b5c33f627dbd0d50f (patch) | |
tree | 6dd4b35eda74487977bfae5bb0b81a133dfc1bf4 /examples | |
parent | 05bafd509ca302fc63465fece7cd0c33ec602e31 (diff) | |
download | qtwebchannel-54f66cc7a1e17155e90a1d3b5c33f627dbd0d50f.tar.gz |
Make the underlying transport mechanism of the webchannel pluggable.
This enables us to optionally use navigator.qt instead of a WebSocket,
which is nicer setup-wise and is also slightly faster:
navigator.qt:
284.0 msecs per iteration (total: 2,840, iterations: 10)
WebSocket:
295.8 msecs per iteration (total: 2,959, iterations: 10)
The baseline is ca. 203 msecs, which would mean a performance boost
of ca. 12.7%.
Furthermore, this sets the fundation to eventually add a WebEngine
transport mechanism. The WebViewTransport should also be removed and
instead the WebView itself should directly implement the
WebChannelTransportInterface.
Change-Id: I368bb27e38ffa2f17ffeb7f5ae695690f6f5ad21
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/qml/example.qml | 10 | ||||
-rw-r--r-- | examples/qml/index.html | 3 | ||||
-rw-r--r-- | examples/standalone/main.cpp | 9 |
3 files changed, 14 insertions, 8 deletions
diff --git a/examples/qml/example.qml b/examples/qml/example.qml index f77b4c6..2d51f27 100644 --- a/examples/qml/example.qml +++ b/examples/qml/example.qml @@ -58,8 +58,11 @@ ApplicationWindow { WebChannel { id: webChannel - onRawMessageReceived: { - textEdit.text += "Received message: " + rawMessage + "\n"; + connections: WebViewTransport { + webViewExperimental: webView.experimental + onMessageReceived: { + textEdit.text += "Received message: " + message + "\n"; + } } } @@ -106,8 +109,9 @@ ApplicationWindow { Layout.fillHeight: true Layout.minimumWidth: window.width / 2 id: webView - url: webChannel.baseUrl ? ("index.html?webChannelBaseUrl=" + webChannel.baseUrl) : "about:blank" + url: "index.html" experimental.preferences.developerExtrasEnabled: true + experimental.preferences.navigatorQtObjectEnabled: true } } } diff --git a/examples/qml/index.html b/examples/qml/index.html index cd20ac9..8b65dd2 100644 --- a/examples/qml/index.html +++ b/examples/qml/index.html @@ -5,8 +5,7 @@ <script type="text/javascript" src="qrc:///qwebchannel/qwebchannel.js"></script> <script type="text/javascript"> //BEGIN SETUP - var baseUrl = (/[?&]webChannelBaseUrl=([A-Za-z0-9\-:/\.]+)/.exec(location.search)[1]); - new QWebChannel(baseUrl, function(channel) { + new QWebChannel(navigator.qt, function(channel) { document.getElementById("send").onclick = function() { var input = document.getElementById("input"); var text = input.value; diff --git a/examples/standalone/main.cpp b/examples/standalone/main.cpp index 8546a12..836d324 100644 --- a/examples/standalone/main.cpp +++ b/examples/standalone/main.cpp @@ -40,6 +40,7 @@ ****************************************************************************/ #include "qwebchannel.h" +#include "qwebsockettransport.h" #include <QApplication> #include <QDialog> @@ -55,14 +56,14 @@ class Dialog : public QObject Q_OBJECT public: - explicit Dialog(QWebChannel *channel, QObject *parent = 0) + explicit Dialog(QWebSocketTransport *transport, QObject *parent = 0) : QObject(parent) { ui.setupUi(&dialog); dialog.show(); connect(ui.send, SIGNAL(clicked()), SLOT(clicked())); - connect(channel, SIGNAL(baseUrlChanged(QString)), + connect(transport, SIGNAL(baseUrlChanged(QString)), SLOT(baseUrlChanged(QString))); } @@ -109,8 +110,10 @@ int main(int argc, char** argv) QApplication app(argc, argv); QWebChannel channel; + QWebSocketTransport transport; + channel.connectTo(&transport); - Dialog dialog(&channel); + Dialog dialog(&transport); channel.registerObject(QStringLiteral("dialog"), &dialog); |