我们试图让Socket.io flashsockets通过HTTPS/WSS在Internet Explorer 9中工作。闪存卡通过HTTP工作,但HTTPS给我们带来了问题。我们使用socket.io版本0.8.7和socket.io-client版本0.9.1-1。来自Socket.io的s3_pkt.c中的HTTPS错误“数据长度太长”
我们正在通过端口443上的SSL运行我们的websocket服务器。我们已经在正确的位置指定了我们的WebsocketMainInsecure.swf文件的位置(这些是跨域ws请求),并且我们正在加载文件在swfobject中嵌入HTTPS。
我们为我们的EC2实例在我们的安全组中打开了端口843,并且成功地通过HTTP呈现了跨源策略文件。它似乎无法通过HTTPS进行呈现(Chrome会引发SSL连接错误)。
我们已经尝试了两个版本的WebsocketMainInsecure.swf文件。第一,不包括线
Security.allowInsecureDomain("*");
这引发错误SCRIPT16389: Unspecified error.
在WebSocket.__flash.setCallerUrl(location.href)
线由Socket.io,这是建立关WebsocketMainInsecure.as提供的文件。
我们估计,这是因为SWF文件是不允许HTTPS请求,所以我们替换为一个在此回购发现WebSocketMainInsecure.swf文件:,因为它包括在动作的
Security.allowInsecureDomain("*");
线码。当我们使用这个时,我们看到flashsocket连接保持断开连接并以无限循环重新连接。我们将错误追踪到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,客户端0.9.6版本,我们仍然得到了Access is denied
错误。
这个错误一直非常难以调试,现在我们对如何让FlashSocket工作不知所措。我们想知道它是否可能与使用旧版本的socket.io有关,或者我们的策略文件服务器不接受HTTPS请求,或者甚至可能来自Web的WebSocketMainInsecure.swf文件 - socket-js github repo是根据socket.io-client期望的内容构建的。
这可能会更好地问在不同的论坛。 。 。 ServerFault可能是一个不错的选择。这里是[从那里的一个类似的错误](http://serverfault.com/questions/402152/error-in-openssl-s-client-data-length-is-too-long),这可能会给你有些线索。 – iND 2012-07-20 03:55:44
@iND看到这个问题,但不知道它是否对我有帮助,您怎么看? – user730569 2012-07-20 07:37:55
我对调试服务器交互的知识非常有限,这可能不是该领域专家最多的论坛。您可以在更专注的论坛中获得更好的回应。但是,这意味着这可能不是Flash问题。错误消息是相同的,行号只有一个距离你的错误行,所以我会认为解决方案 - 如果你忽略LDAP相关信息 - 可能在这里有一些轴承。 – iND 2012-07-20 12:49:47