WebSocket interface

Web sockets handlers fully implemented. Filter handlers have yet to be
implemented.
This commit is contained in:
obscuren
2014-09-30 23:26:16 +02:00
parent 41ae6f298e
commit 6db40ecb22
7 changed files with 226 additions and 55 deletions

View File

@@ -1,9 +1,8 @@
// The magic return variable. The magic return variable will be set during the execution of the QML call.
(function(window) {
function message(type, data) {
document.title = JSON.stringify({type: type, data: data});
return window.____returnData;
var Promise = window.Promise;
if(typeof(Promise) === "undefined") {
var Promise = Q.Promise;
}
function isPromise(o) {
@@ -446,6 +445,7 @@
}
});
var g_seed = 1;
function postData(data, cb) {
data._seed = g_seed;
@@ -459,24 +459,6 @@
g_seed++;
navigator.qt.postMessage(JSON.stringify(data));
}
navigator.qt.onmessage = function(ev) {
var data = JSON.parse(ev.data)
if(data._event !== undefined) {
eth.trigger(data._event, data.data);
} else {
if(data._seed) {
var cb = eth._callbacks[data._seed];
if(cb) {
cb.call(this, data.data)
// Remove the "trigger" callback
delete eth._callbacks[ev._seed];
}
}
}
window._messagingAdapter.call(this, JSON.stringify(data))
}
})(this);

View File

@@ -1,3 +0,0 @@
if(typeof(Promise) === "undefined") {
window.Promise = Q.Promise;
}

View File

@@ -0,0 +1,21 @@
window._messagingAdapter = function(data) {
navigator.qt.postMessage(data);
};
navigator.qt.onmessage = function(ev) {
var data = JSON.parse(ev.data)
if(data._event !== undefined) {
eth.trigger(data._event, data.data);
} else {
if(data._seed) {
var cb = eth._callbacks[data._seed];
if(cb) {
cb.call(this, data.data)
// Remove the "trigger" callback
delete eth._callbacks[ev._seed];
}
}
}
}

View File

@@ -164,7 +164,7 @@ import "../ext/qml_messaging.js" as Messaging
experimental.preferences.javascriptEnabled: true
experimental.preferences.navigatorQtObjectEnabled: true
experimental.preferences.developerExtrasEnabled: true
experimental.userScripts: ["../ext/q.js", "../ext/pre.js", "../ext/big.js", "../ext/string.js", "../ext/html_messaging.js"]
experimental.userScripts: ["../ext/qt_messaging_adapter.js", "../ext/q.js", "../ext/big.js", "../ext/string.js", "../ext/html_messaging.js"]
experimental.onMessageReceived: {
console.log("[onMessageReceived]: ", message.data)
// TODO move to messaging.js