• Home
  • Nous contacter

Le blog d'Adfab

Le blog d'Adfab

Le blog d'Adfab

Le blog d'Adfab
Mobile

Cordova et limites des web workers

Ce qui est génial dans le monde du développement c’est qu’il est possible d’utiliser le travail d’autrui pour faire notre travail. Mais cela ne fonctionne pas toujours du premier coup (voire jamais). Aujourd’hui j’ai voulu intégrer un superbe test de bande passante en javascript.

Tout de suite je me dis c’est du web worker, je n’en ai jamais fait sur une application ios avec cordova. Mais dans l’absolu c’est du javascript, donc je me rends sur github et j’intègre le petit js. Et la surprise après 2 ou 3 calages  cela fonctionne très bien ! Sur chrome…

Et oui comme le build est plus long, je teste sur le navigateur d’abord puis je réalise le build..

Et là, misère ! Rien ne fonctionne sur l’appli.

Après 2h de recherches (googlage), tests, debugs, compilations, etc… J’apprends plusieurs choses :

  • On ne peut pas faire de web worker en local avec cordova, c’est-à-dire charger un web worker dans le dossier de mon js
  • Par contre on peut le faire fonctionner avec un Blob
  • Il n’est pas possible de charger un fichier externe sans que le serveur renvoie la same origin policy dans mon web worker (bon pour celle-ci je pense que vous le saviez déjà)

Penchons-nous un peu sur la technique du Blob, qui va nous permettre de créer une chaîne de caractères puis d’appeler cette chaîne comme s’il s’agissait d’un fichier javascript grâce à window.createObjectURL (ou bien window.webkitURL.createObjectURL pour les navigateurs utilisant webkit).

Nous pourrions utiliser une variable pour créer notre chaîne de caractères. Mais écrire tout notre javascript ainsi n’est pas pratique. Il vaut mieux utiliser une balise script et récupérer le contenu sous forme de texte.

Dans notre script principal nous pouvons maintenant instancier le web worker

var blob = new Blob([document.querySelector('#monWorker').textContent]);

var worker = new Worker(window.URL.createObjectURL(blob));
worker.onmessage = function(e) {
    console.log(e.data);
}
worker.postMessage();

Voila vous savez maintenant comment utiliser un web worker avec cordova, plus besoin de chercher partout parce que le nom du fichier passé en paramètre n’est pas trouvé, le Blob est votre ami.

18/03/2014 15 MIN READ TAGS: Apache Cordova BY: Nicolas LABBE 0 COMMENT
SHARE
LIRE LA SUITE

Nicolas LABBE

Si c’est stupide mais que ça marche, ce n’est pas stupide.

Les langages de programmation WTF

Des thèmes Wordpress pour créer votre site

VOUS POURRIEZ AIMER

Mobile Améliorer la performance de ses applications Phonegap

Mobile Optimisations Phonegap / Cordova

Mobile Présentation de Phonegap 3.0

Mobile Phonegap: Utiliser des polices systèmes

Mobile Application mobile : Native ou hybride ?

Mobile Développer ses applications Phonegap sur son navigateur

A propos d’Adfab

Nous sommes un studio de production digitales et d’innovation digitales au service des agences et des annonceurs
Nous recherchons le scintillement dans les regards et le plaisir de réalisations sur-performantes
Nous sommes techno-agnostiques
Nous sommes Adfab

Le blog d'Adfab
Copyright © 2018 Adfab Connect