HTTPS/WSS を介して Internet Explorer 9 で Socket.io flashsockets を動作させることを試みています。フラッシュソケットは HTTP 経由で動作しますが、HTTPS が問題を引き起こしています。socket.io バージョン 0.8.7 と socket.io-client バージョン 0.9.1-1 を使用しています。
ポート 443 で SSL 経由で websocket サーバーを実行しています。WebsocketMainInsecure.swf ファイル (これらはクロスドメイン ws リクエスト) の場所を正しい場所に指定し、swfobject 埋め込みにファイルをロードしています。 HTTPS 経由。
EC2 インスタンスのセキュリティ グループでポート 843 を開き、クロス オリジン ポリシー ファイルが HTTP 経由で正常にレンダリングされています。HTTPS 経由でレンダリングされないようです (Chrome は SSL 接続エラーをスローします)。
2 つのバージョンの WebsocketMainInsecure.swf ファイルを試しました。1 つ目は、WebsocketMainInsecure.as から構築された Socket.io によって提供されるファイルで、次の行が含まれていません。
Security.allowInsecureDomain("*");
SCRIPT16389: Unspecified error.
これにより、行にエラーがスローされますWebSocket.__flash.setCallerUrl(location.href)
。
SWF ファイルが HTTPS リクエストを許可していないことが原因であると判断したため、WebSocketMainInsecure.swf ファイルを次のリポジトリにあるものに置き換えました: https://github.com/gimite/web-socket-js
Security.allowInsecureDomain("*");
actionscript コードの行。これを使用すると、フラッシュソケット接続が無限ループで切断と再接続を繰り返していることがわかりました。Transport プロトタイプの onSocketError 関数で、socket.io ライブラリの transport.js ファイルまでエラーを追跡しました。エラーがスローされます:
[Error: 139662382290912:error:1408F092:SSL routines:SSL3_GET_RECORD:data length too long:s3_pkt.c:503:]
socket.io と socket.io-client の両方をバージョン 0.9.6 に更新しようとしましたが、それでもAccess is denied
エラーが発生しました。
このエラーはデバッグが非常に難しく、現在、フラッシュソケットを機能させる方法について途方に暮れています。古いバージョンの socket.io を使用しているためか、ポリシー ファイル サーバーが HTTPS 要求を受け入れないためか、WebSocketMainInsecure.swf ファイルが Web からsocket-js github リポジトリは、socket.io-client が期待するものに対して相対的に構築されました。