【发布时间】:2011-04-18 23:11:01
【问题描述】:
我正在使用 Mate 的 RemoteObjectInvoker 调用基于 FluorineFX 的 API 中的方法。但是,所有请求似乎都按顺序发送到服务器。也就是说,如果我同时发送一组消息,则在第一个返回之前不会发送第二个。有没有办法改变这种行为?我不希望我的应用在处理长请求时无响应。
【问题讨论】:
标签: apache-flex flash actionscript-3 mate
我正在使用 Mate 的 RemoteObjectInvoker 调用基于 FluorineFX 的 API 中的方法。但是,所有请求似乎都按顺序发送到服务器。也就是说,如果我同时发送一组消息,则在第一个返回之前不会发送第二个。有没有办法改变这种行为?我不希望我的应用在处理长请求时无响应。
【问题讨论】:
标签: apache-flex flash actionscript-3 mate
This 线程将帮助您了解发生了什么(它谈到了 blazeds/livecylce,但我假设 Fluorine 使用相同的方法)。简而言之,发生的事情是: a)Flash 播放器将您的所有调用分组在一个 HTTP 帖子中。 b)服务器(BlazeDs、Fluorine 等)接收到请求并开始依次执行方法。
解决方案
a) 每个方法有一个 HTTP 帖子,而不是一个包含所有 AMF 消息的 HTTP 帖子。为此,您可以使用 HTTPChannel 代替 AMFChannels(在内部使用 flash.net.URLLoader 而不是 flash.net.NetConnection)。您将受到浏览器定义的最大并行连接数的限制。
b)只有一个 HTTP 帖子,但在服务器上实现了一个巧妙的解决方案(这将花费您大量的开发时间)。基本上,您可以编写自己的并行处理器并使用消息消费者/发布者来将您的方法的结果发送给客户端。
c)在https://bugs.adobe.com/jira/browse/BLZ-184 上有一个类似于 a) 的解决方法 - 手动创建您的远程对象并在端点末尾附加一个随机 id。
【讨论】: