1

我正在使用 Mate 的 RemoteObjectInvoker 调用基于 FluorineFX 的 API 中的方法。但是,所有请求似乎都按顺序发送到服务器。也就是说,如果我同时发送一组消息,则在第一个返回之前不会发送第二个。有没有办法改变这种行为?我不希望我的应用在处理长请求时无响应。

4

1 回答 1

1

线程将帮助您了解发生了什么(它谈到了 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。

于 2010-09-30T19:18:35.510 回答