【发布时间】:2012-03-09 15:36:50
【问题描述】:
我有一个空中 (4.5.1) 移动项目,将 ArrayCollection 发送到服务器 (Tomcat/BlazeDS)
服务器管理对象并返回一个包含结果的字符串(ok/error/etc)..
一切正常,直到:
我尝试发送长度 > 35000(不确定边界限制)的 ArrayCollection。
发送 arraycollection 后,UI 似乎冻结了一段时间,然后
我收到一个 FaultEvent 错误
NetConnection.Call.Failed: HTTP: Failed
服务器收到请求,解析并返回结果字符串
所以,因为程序得到了错误事件,我不能(从客户端)确定请求是否正确完成......
我该如何解决?这个问题是由arraycollection的长度产生的吗? 其他想法?
谢谢
【问题讨论】:
-
如果屏幕被冻结,请尝试使用压缩并通过执行部分请求来减少一次发送到服务器的数据量。
-
您也可以使用 ServiceCapture 之类的工具来获取请求的大小。在 35,000 行时,它可能是一个很大的尺寸。 (就像通过网络发送 mp3 一样)。也许服务器在请求完成之前就超时了。
-
你为什么要发送超过 35K 行?!对我来说似乎很荒谬。
-
@J_A_X:为什么会这样?这个程序就像一个云,但是当客户端同步时,它需要接收和发送所有用户修改的所有数据,所以有很多用户,做了很多更新/添加的行。反正 35k 行大约是 ~1 -2Mb 所以这不是带宽问题...
-
一次传输 1-2mb 对于 Web 应用程序来说是巨大的。服务器很可能无法处理它,或者客户端在尝试解析和更新所有数据后完全停止。必须有比这更好、更有效的算法。我不明白为什么一个客户需要知道“所有用户修改的所有数据”。这么多年来,我从未见过这种需求,因为不可能以连贯的方式同时显示所有这些信息。
标签: actionscript-3 apache-flex amf fault remoteobject