summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorMilian Wolff <milian.wolff@kdab.com>2014-01-10 14:21:05 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-06 16:32:20 +0100
commit54f66cc7a1e17155e90a1d3b5c33f627dbd0d50f (patch)
tree6dd4b35eda74487977bfae5bb0b81a133dfc1bf4 /examples
parent05bafd509ca302fc63465fece7cd0c33ec602e31 (diff)
downloadqtwebchannel-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.qml10
-rw-r--r--examples/qml/index.html3
-rw-r--r--examples/standalone/main.cpp9
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);