Nous essayons de faire fonctionner les flashsockets de Socket.io dans Internet Explorer 9 via HTTPS/WSS. Les flashsockets fonctionnent sur HTTP, mais HTTPS nous pose problème. Nous utilisons socket.io version 0.8.7 et socket.io-client version 0.9.1-1.
Nous exécutons notre serveur websocket via SSL sur le port 443. Nous avons spécifié l'emplacement de notre fichier WebsocketMainInsecure.swf (il s'agit de requêtes ws inter-domaines) dans le bon emplacement, et nous chargeons le fichier dans l'objet swf embed via HTTPS.
Nous avons ouvert le port 843 dans notre groupe de sécurité pour notre instance EC2 et le fichier de politique d'origine croisée est rendu avec succès par HTTP. Il ne semble pas pouvoir être rendu en HTTPS (Chrome génère une erreur de connexion SSL).
Nous avons essayé deux versions du fichier WebsocketMainInsecure.swf. La première est le fichier fourni par Socket.io, qui est construit à partir de WebsocketMainInsecure.as qui n'inclut pas la ligne
Security.allowInsecureDomain("*");
L'erreur suivante apparaît SCRIPT16389: Unspecified error.
au WebSocket.__flash.setCallerUrl(location.href)
ligne.
Nous avons compris que c'était parce que le fichier SWF n'autorisait pas les requêtes HTTPS, nous avons donc remplacé le fichier WebSocketMainInsecure.swf par celui trouvé dans ce dépôt : https://github.com/gimite/web-socket-js parce qu'il comprend le
Security.allowInsecureDomain("*");
dans le code Actionscript. Lorsque nous avons utilisé cette ligne, nous avons constaté que la connexion flashsocket se déconnectait et se reconnectait sans cesse dans une boucle infinie. Nous avons trouvé l'erreur dans le fichier transport.js de la bibliothèque socket.io, dans la fonction onSocketError du prototype Transport. Elle génère l'erreur suivante :
[Error: 139662382290912:error:1408F092:SSL routines:SSL3_GET_RECORD:data length too long:s3_pkt.c:503:]
Nous avons même essayé de mettre à jour socket.io et socket.io-client à la version 0.9.6 et nous avons encore obtenu le message suivant Access is denied
erreur.
Cette erreur a été très difficile à déboguer, et nous ne savons plus comment faire fonctionner les flashsockets. Nous nous demandons si cela n'a pas à voir avec l'utilisation d'une ancienne version de socket.io, ou peut-être que notre serveur de fichiers de politique n'accepte pas les demandes HTTPS, ou peut-être même la façon dont le fichier WebSocketMainInsecure.swf du repo github web-socket-js a été construit par rapport à ce que socket.io-client attend.