Estamos tentando fazer com que os flashsockets do Socket.io funcionem no Internet Explorer 9 em HTTPS / WSS. Os flashs funcionam em HTTP, mas o HTTPS está nos dando problemas. Estamos usando o socket.io versão 0.8.7 e o socket.io-client versão 0.9.1-1.
Estamos executando nosso servidor websocket via SSL na porta 443. Especificamos a localização do nosso arquivo WebsocketMainInsecure.swf (são solicitações ws entre domínios) no local correto, e estamos carregando o arquivo em o swfobject incorporado por HTTPS.
Abrimos a porta 843 em nosso grupo de segurança para nossa instância do EC2 e o arquivo de política de origem cruzada está sendo renderizado com êxito por HTTP. Ele não parece renderizar por HTTPS (o Chrome gera um erro de conexão SSL).
Tentamos duas versões do arquivo WebsocketMainInsecure.swf. O primeiro é o arquivo fornecido pelo Socket.io, que é construído a partir do WebsocketMainInsecure.as que não inclui a linha
Security.allowInsecureDomain("*");
Isso gera o erro SCRIPT16389: Unspecified error.
na linha WebSocket.__flash.setCallerUrl(location.href)
.
Achamos que era porque o arquivo SWF não permitia solicitações HTTPS, então substituímos o arquivo WebSocketMainInsecure.swf pelo encontrado neste repo: link porque inclui o
Security.allowInsecureDomain("*");
linha no código de actionscript. Quando usamos isso, vimos que a conexão do flashsocket ficava desconectando e reconectando em um loop infinito. Rastreamos o erro no arquivo transport.js na biblioteca socket.io na função onSocketError no protótipo Transport. Ele lança o erro:
[Error: 139662382290912:error:1408F092:SSL routines:SSL3_GET_RECORD:data length too long:s3_pkt.c:503:]
Acreditamos que esse erro pode, de alguma forma, estar relacionado aos nossos certificados de subdomínio de caractere curinga ssl, mas não temos certeza.
Até tentamos atualizar o socket.io e o socket.io-client para a versão 0.9.6 e ainda temos o erro Access is denied.
Este erro tem sido muito difícil de depurar, e agora estamos perdendo a forma de fazer com que os flashsockets funcionem. Estamos nos perguntando se isso pode ter a ver com o uso de uma versão mais antiga do socket.io, ou talvez o nosso servidor de arquivos de política não aceita solicitações HTTPS, ou talvez até mesmo o modo como o arquivo WebSocketMainInsecure.swf da web- O repositório github do socket-js foi construído em relação ao que o socket.io-client espera.
Qualquer ajuda é muito apreciada!