我目前正在开发一个项目,需要在不使用像Tomcat这样的服务器的情况下从空中与java通信。为此,我发现并使用了Flerry。
只要我尝试从我最初从Air实例化的类中发送消息,就可以在Java和Air之间进行通信。
我尝试做的是下载来自java中的Message Class的消息,并使用该类从Java向Air发送信息和错误。
MessageController.java:
public class MessageController
{
public MessageController()
{
}
public static void sendErrorMessage(String errorMessage)
{
NativeObject.sendMessage(errorMessage, "error");
}
public static void sendInfoMessage(String infoMessage)
{
NativeObject.sendMessage(infoMessage, "info");
}
}
在Air中我在消息传递类上创建一个NativeObject并订阅消息:
var messageController:NativeObject = new NativeObject();
messageController.source = "controller.MessageController" ;
messageController.singleton = true;
messageController.debug = false;
messageController.addEventListener(FaultEvent.FAULT, onFileControllerFault, false, 0, true);
messageController.subscribe("info", infoMessageHandler);
messageController.subscribe("error", errorMessageHandler);
正如您所猜测的那样,这不起作用。 我似乎只能从我直接订阅的类中发送消息,例如,如果我这样做:
messageController.start();
在我的MessageController.java中我把它:
public void start()
{
NativeObject.sendMessage("test message", "info");
}
infoMessageHandler接收包含测试消息的消息,应该如此。
如何从Java中的任何类发送消息并在Air端捕获它们?
答案 0 :(得分:0)
我不确定我是否完全理解这个问题,但是有一个原因你不能简单地通过Java'通信'类发送和接收所有消息吗?如果这有效,我只需在Java接口/通信类中设置公共方法并完成它。
(已经有一段时间了,因为我已经挖掘了Flerry如何工作,所以我不记得足以指出你所看到的行为的可能原因。)Flerry也是开源的,并不是很大。如果你真的想知道它为什么会以某种方式表现,我会打赌你可以通过查看来源来弄明白。 (我承诺,不会花费6个月的时间来学习一些Spring或Hibernate代码库,甚至是BlazeDS。)
我在一个小应用程序中使用Flerry,但是现在我想到了它,我只有一个类可以向Flex发送任何内容!但我觉得你可能需要用不同的方式来描述你面临的问题,因为这对我来说听起来像是预期的行为。