Use polling instead of XHR for callbacks from Java to JavaScript when device has a proxy set.

This commit is contained in:
Bryce Curtis
2010-10-26 15:09:54 -05:00
parent f63b8140af
commit bc1e039ea1
3 changed files with 75 additions and 8 deletions
+39 -1
View File
@@ -238,7 +238,14 @@ PhoneGap.onDeviceReady = new PhoneGap.Channel('onDeviceReady');
PhoneGap.Channel.join(function() {
// Start listening for XHR callbacks
PhoneGap.JSCallback();
setTimeout(function() {
if (CallbackServer.usePolling()) {
PhoneGap.JSCallbackPolling();
}
else {
PhoneGap.JSCallback();
}
}, 1);
// Run PhoneGap constructors
PhoneGap.onPhoneGapInit.fire();
@@ -603,6 +610,37 @@ PhoneGap.JSCallback = function() {
xmlhttp.send();
};
/**
* The polling period to use with JSCallbackPolling.
* This can be changed by the application. The default is 50ms.
*/
PhoneGap.JSCallbackPollingPeriod = 50;
/**
* This is only for Android.
*
* Internal function that uses polling to call into PhoneGap Java code and retrieve
* any JavaScript code that needs to be run. This is used for callbacks from
* Java to JavaScript.
*/
PhoneGap.JSCallbackPolling = function() {
var msg = CallbackServer.getJavascript();
if (msg) {
setTimeout(function() {
try {
var t = eval(""+msg);
}
catch (e) {
console.log("JSCallbackPolling Error: "+e);
}
}, 1);
setTimeout(PhoneGap.JSCallbackPolling, 1);
}
else {
setTimeout(PhoneGap.JSCallbackPolling, PhoneGap.JSCallbackPollingPeriod);
}
};
/**
* Create a UUID
*