Premiers pas (suite) avec Snap

Plusieurs questions, toutes liées à Snap, sous W7 (a jour MS), pour contrôler un Poppy-ergo-jr via un RasPi 3 :
Les scripts se terminent en erreur lorsque le butineur utilisé côté PC est Firefox (V 50.0) mais s’exécutent sans problème avec IE 11. Bonne explication ? (note : Chrome n’est pas une bonne réponse !!)
Donc, avec IE11, toutes les postures préinstallées lancées à partir du module de test ‘‘contrôle’’ de Poppy fonctionnent sans problème plusieurs fois de suite, les moteurs changent de couleur, passent en position repos et se réactivent … tout va bien, on peut le supposer, du coté et de Poppy et du Pi3 !!!
A partir de l’interface de Snap (d’une incroyable lenteur de réaction !!), après avoir activé tous les moteurs, les mêmes commandes de postures instanciées au travers du bloc ‘‘behaviour’’ s’exécutent une seule fois, sans répétition possible, avec parfois si on insiste, un plantage de IE !! On dirait que les scripts partent dans une boucle sans fin, dans l’attente d’un événement. Bonne explication ?
Et pour s’affranchir des moteurs, un simple script d’allumage-extinction de la lumière des moteurs suit le même comportement. Une fois, ça marche. Deux fois, rien. Bonne explication ?

Et comme on n’a pas accès à l’intérieur du comportement du site web pour voir l’exécution pas à pas des scripts, il n’est pas facile de comprendre !!
Précision : installation de la configuration complète de Poppy pour un Pi3 (v2016-09-30) sur une SdCard 16Go puis update et dist-upgrade pour mise a jour de tous les paquets de Pi3 (mais sans influence visible).

Merci a Tous et Bonne Année 2017 !!

Bonjour @Gdgege,

À ma connaissance c’est la première fois que ce problème ce manifeste, je vais prochainement essayer de le reproduire pour vous donner une bonne réponse.

@Gdgege, je viens de tester avec une machine sur Windows 7 (Intel Core i5-321M@2.50GHz, 2 Go RAM).

J’ai identifié 2 problèmes distincts.

Les erreurs avec Firefox

Avec Firefox 50.1, je n’arrive pas à ouvrir les blocs Snap. Le comportement est celui décrit : le script est exécuté de manière bloquante par le navigateur, puis échoue en provoquant un plantage de l’onglet.
En essayant avec Chrome et Internet Explorer 11 (IE 11), ça fonctionne.

J’ai donc regardé du côté du code source de Snap, et il semble que ce problème soit identifié par ses développeurs (voir les issues #1466, #363 et #1194).
J’ai essayé de changer certains paramètres de configuration de Firefox, sans amélioration visible.

À noter que je n’ai pas ce problème sur la version MacOS de Firefox, mais ma machine est nettement plus puissante que celle dont je me suis servi pour les tests.

Je n’ai malheureusement pas d’autre solution que de vous encourager à utiliser IE 11 dans l’immédiat, dans la mesure où c’est un problème qui est propre à Snap.

Impossibilité à répéter des instructions

Là aussi, j’ai réussi à reproduire le problème. Une instruction faisant appel à l’API du robot ne peut être exécutée qu’une seule fois.

En laissant ouvert les outils de développeur de IE 11 (touche F12), pour les éventuelles erreurs, je ne constatais plus le problème. Après avoir écarquillé les yeux quelques minutes, j’ai remarqué que le code de retour de l’API du robot était 304. Mais du côté du serveur, aucun de ces appels n’était visible dans les logs. Et en effet, les requêtes ne quittaient pas le navigateur.

L’explication est que IE a une politique de cache assez agressive en ce qui concerne les requêtes utilisant le verbe GET, et considère que ce n’est pas nécessaire de vraiment soumettre la requête au serveur.

Il y a plusieurs manières de régler ce problème, chacune nécessitant une modification de notre part au code du robot.

Ouvrir les outils de développeur invalide systématiquement le cache des requêtes, et c’est ce que je vous recommande de faire en attendant que nous publiions une mise à jour.


En conclusion

C’est pas de chance, vraiment. Mais vous pouvez quand même vous en tirer en utilisant IE 11 et en laissant les outils développeurs ouverts. C’est une solution qui n’est pas acceptable, et j’espère que la communauté pourra améliorer le robot pour que ce problème disparaisse dans une prochaine version.

Et bonne année à vous aussi !

1 Like