我正在尝试让一个RTMP消息传递应用程序在FlashDevelop和FluorineFx中工作。我习惯于用一些黑客来连接FlexBuilder 3中的一个FlexBuilder,但我正在空白,让它与FlashDevelop一起工作。
我有一个配置文件\ website \ FluorineFx \services-config的FluorineFx网站
<?xml version="1.0" encoding="utf-8" ?>
<services-config>
<services>
<service-include file-path="remoting-config.xml" />
<service id="message-service" class="flex.messaging.services.MessageService" messageTypes="flex.messaging.messages.AsyncMessage">
<!-- DO NOT CHANGE <adapters> SECTION-->
<adapters>
<adapter-definition id="messagingAdapter" class="FluorineFx.Messaging.Services.Messaging.MessagingAdapter" default="true"/>
</adapters>
<destination id="chat">
<adapter ref="messagingAdapter"/>
<properties>
<network>
<session-timeout>0</session-timeout>
</network>
</properties>
<channels>
<channel ref="my-rtmp"/>
</channels>
</destination>
</service>
<!-- <service-include file-path="data-management-config.xml" /> -->
</services>
<!-- Custom authentication -->
<security>
</security>
<channels>
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://{server.name}:{server.port}/{context.root}/Gateway.aspx" class="flex.messaging.endpoints.AMFEndpoint"/>
<properties>
<!--<legacy-collection>true</legacy-collection> -->
</properties>
</channel-definition>
<channel-definition id="my-rtmp" class="mx.messaging.channels.RTMPChannel">
<endpoint uri="rtmp://{server.name}:1951" class="flex.messaging.endpoints.RTMPEndpoint"/>
</channel-definition>
</channels>
</services-config>我的client.swf文件正在我的网站上的一个目录\app\chat中运行
在app\chat目录中,我有一个App.config文件:
<configuration>
<!-- Application object. Specify a fully qualified type name for your handler -->
<application-handler type="testfx.AppHandler"/>
<!-- Filename generator for streams. Specify a fully qualified type name to use a custom generator-->
<streamFilenameGenerator type="FluorineFx.Messaging.Rtmp.Stream.DefaultStreamFilenameGenerator"/>
<consumerService type="FluorineFx.Messaging.Rtmp.Stream.ConsumerService"/>
<providerService type="FluorineFx.Messaging.Rtmp.Stream.ProviderService"/>
<streamService type="FluorineFx.Messaging.Rtmp.Stream.StreamService"/>
<!-- Manages creation, retrieval and update of remote shared objects-->
<sharedObjectService type="FluorineFx.Messaging.Rtmp.SO.SharedObjectService">
<persistenceStore type="FluorineFx.Messaging.Rtmp.Persistence.FileStore"/>
</sharedObjectService>
<!--
<sharedObjectSecurityService type=""/>
-->
</configuration>testfx.AppHandler类只有一个回显方法:
public class AppHandler : ApplicationAdapter
{
public string echo(string msg)
{
return "Echo: " + msg;
}
}我有一个带有以下FlashDevelop库的.swc项目
main.as文件是:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.NetStatusEvent;
import flash.net.NetConnection;
import flash.net.ObjectEncoding;
import mx.messaging.channels.*;
import mx.messaging.Consumer;
import mx.messaging.events.MessageEvent;
import mx.messaging.events.MessageFaultEvent;
import mx.messaging.Producer;
/**
* ...
* @author Nathan
*/
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var consumer:Consumer = new Consumer();
consumer.destination = "chat";
consumer.addEventListener(MessageEvent.MESSAGE, messageHandler);
consumer.addEventListener(MessageFaultEvent.FAULT, faultHandler);
consumer.subscribe();
var producer:Producer = new Producer();
producer.destination = "chat";
producer.addEventListener(MessageFaultEvent.FAULT, faultHandler);
producer.connect();
}
private function faultHandler(event:MessageFaultEvent):void
{
trace("fault");
}
private function messageHandler(event:MessageEvent):void
{
trace(event.message.body);
}
private function onNetStatus(event:NetStatusEvent):void
{
trace(event.info.code);
}
}
}当我运行这个程序时,我现在得到的例外是:
错误异常,information=MessagingError message=‘目的地’聊天‘要么不存在,要么目的地没有定义通道(并且应用程序没有定义任何默认通道)。
发布于 2012-03-20 11:10:17
首先,如果您更改了services-config,则需要重新启动IIS或应用程序池。
其次,您是否检查了FluorineFX日志文件,以查看是否有任何错误(在FluorineFX的调试中设置级别)。在日志文件中,您还应该看到添加的目的地。看看他们之间是否有聊天。
第三,我将获得FluorineFX源代码并尝试从那里调试它。了解一下源代码总是很有用的。
FluorineFX的安装还附带了一些非常好的示例。检查它们并将它们与您的代码进行比较。也许这样你很快就会发现出了什么问题。
发布于 2015-05-12 12:48:33
我知道这是晚了,但FluorineFX不接受除“氟”以外的任何其他目的地。
<destination id="fluorine">https://stackoverflow.com/questions/7226304
复制相似问题