2

如何让 SWF 文件立即从进行实时计算的 Java 应用程序中检索值(速度是必需的)。

其他形式的问题:我怎样才能尽可能快地为我的网站浏览器提供即时数据 - 现在是 bean 计算的?

4

2 回答 2

1

如果速度至关重要,您可能希望通过某种套接字连接来实现。通常签名的小程序或 WebStart Java 应用程序能够打开一个监听套接字。Flash 应用程序将能够连接到此套接字,因此您将进行非常快速的双向通信。

然而,有一些警告。

  • 你应该记住,用户可能会对他机器上奇怪的套接字活动产生怀疑,或者它会被防火墙阻止——所以你需要警告用户。
  • 为了能够从 Flash 连接到 Java,您必须从侦听套接字调度跨域策略文件(或任何其他低于 1024 - 请参阅文档了解详细信息;关键字:crossdomain、policy-file-request、loadPolicyFile)。此外,您的 Flash 应用程序可能需要从 Java 应用程序手动请求此类文件。

关于如何为您的 Java 应用程序获取证书的几个有用链接:如何获取免费代码签名证书(俄语)类似但不太详细的英文描述

但是,如果您能够(阅读:速度足够)使用Java Applet <-> JavaScript <-> Flash组合,我建议您利用它。

于 2009-03-24T15:46:34.990 回答
1

我将假设计算是在运行 Flash 的同一浏览器中的 Java 小程序中完成的。

您可以使用以下代码从小程序中调用 Javascript。然后,此代码可以更新 Flash 动画中的值。

import netscape.javascript.JSObject;

JSObject win = JSObject.getWindow(applet);
win.eval("window.alert('Hello from Java')");

如果我的假设不正确,那么 Java 应用程序在哪里运行?在客户端还是服务器上?

如果它在服务器上,那么您需要 Flash 远程处理。我相信有几种不同的 Flash 远程处理技术。尝试搜索java flash remoting。您可以让它每 2 秒左右调用一次服务器以获取最新数据。

如果它在客户端上运行,出于安​​全考虑,我怀疑您是否可以从 Flash 连接到它。一个签名的 Java 小程序可以连接到它想连接的任何地方。您可以使用它检索数据,然后使用上述方法将其推送到 Flash 中。不过,这将是一个疯狂的黑客行为。你能用 Flex 做同样的事情吗?(我以前从未使用过 Flex)。

于 2009-03-23T07:55:46.953 回答