最近在开发中遇到一个怪异的问题:
1.Flex在IE中同时调用1个以上RemoteObject方法时些调用并没有并行执行,而是一个一个串行执行,一定要等前一个方法returen后 才开始执行下一个Remote方法。
2.如果第一个Remote方法的执行时间超过5分钟,而后面又还有Remote方法在等待执行,Flex会重置(Close- Open)StreamingAMFChannel,并关闭StreamingAMFChannel的socket。引起后端出现IO错误,前端也无法收 到后端push的消息。
这些问题在FireFox、Chrome中都没有出现。折腾了几天发现在是IE中HTTP 1.1配置的问题。IE中对HTTP1.1 Server默认最大只有两个connection。一个connection用于其它用途,而用于Flex channel的就只有一个了。在执行Remote方法时会独占connection,所以如果只有一个connection,Remote方法就只能串 行执行了。参考WinInet limits connections perserver .
解决:
修改注册表中的HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion \Internet Settings>MaxConnectionsPerServer配置。如果没有MaxConnectionsPerServer就new一个, 配成5就差不多了。