2009-06-26 62 views
2

我試圖在Flex/.Net中使用FluorineFX創建一個非常簡單的聊天應用程序,但無法使其正常工作。Flex/.NET:使用FluorineFX的簡單聊天應用程序

<mx:VBox 
    width="100%" 
    height="100%" 
    xmlns:mx="http://www.adobe.com/2006/mxml"> 

<mx:Style source="../../../Monkeywrench.css"/> 

<mx:Script> 
<![CDATA[ 

import mx.controls.Alert; 
import mx.rpc.events.FaultEvent; 
import mx.rpc.events.ResultEvent; 
import mx.messaging.*; 
import mx.messaging.messages.*; 
import mx.messaging.events.*; 
import mx.core.Application; 

private function messageHandler(event:MessageEvent):void 
{ 
    txtLog.text += event.message.body.userId + ": " + event.message.body.text + "\n"; 
} 

private function messagefaultHandler(event:MessageFaultEvent):void 
{ 
    Alert.show(event.faultString, "Error"); 
} 

public function sendMessage():void 
{ 
    var message:AsyncMessage = new AsyncMessage(); 
    message.body = {userId: Application.application.auth.user.Email, text: txtOutput.text} 
    producer.send(message); 
    txtOutput.text=""; 
} 

]]> 
</mx:Script> 

<mx:Consumer id="consumer" destination="chat" message="messageHandler(event)" fault="messagefaultHandler(event)"/> 
<mx:Producer id="producer" destination="chat" fault="messagefaultHandler(event)"/> 

<mx:TextArea height="100%" width="100%" editable="false" id="txtLog"/> 

<mx:HBox width="100%"> 

    <mx:TextInput width="100%" id="txtOutput"/> 
    <mx:Button label="Skicka" click="sendMessage()"/> 

</mx:HBox> 

</mx:VBox> 

我services-config.xml中:

<?xml version="1.0" encoding="utf-8" ?> 
<services-config> 
    <services> 

     <service id="message-service" class="flex.messaging.services.MessageService" messageTypes="flex.messaging.messages.AsyncMessage"> 
      <adapters> 
       <adapter-definition id="messagingAdapter" class="FluorineFx.Messaging.Services.Messaging.MessagingAdapter" default="true"/> 
      </adapters> 
      <destination id="chat"> 
       <adapter ref="messagingAdapter"/> 
       <channels> 
        <channel ref="my-rtmp"/> 
       </channels> 
       <properties> 
        <network> 
         <session-timeout>20</session-timeout> 
        </network> 
        <server> 
         <allow-subtopics>true</allow-subtopics> 
        </server> 
       </properties> 
       <!-- 
       <security> 
        <security-constraint ref="privileged-users"/> 
       </security> 
       --> 
      </destination> 
     </service> 

    </services> 

    <channels> 

     <channel-definition id="my-rtmp" class="mx.messaging.channels.AMFChannel"> 
      <endpoint uri="rtmp://{server.name}:1950" class="flex.messaging.endpoints.RTMPEndpoint"/> 
     </channel-definition> 

    </channels> 
</services-config> 

它編譯所有罰款,當我嘗試發送我沒有得到任何錯誤,也沒有結果。沒有收到消息。我在正確的道路上嗎?端點uri背後的邏輯是什麼?我應該使用什麼端口?我應該配置Web.config嗎? (超出了啓用RemotingService的flourinefx配置?)我沒有得到任何在flourine.log中的響應。

+1

也許您的防火牆阻止了端口1950。 – 2010-03-30 18:47:20

回答

2

您不能爲RTMP使用AMFChannel/AMFEndpoint。請嘗試在services-config.xml中使用以下代碼:

<channel-definition id="channelRtmp" class="mx.messaging.channels.RTMPChannel"> 
    <endpoint uri="rtmp://{server.name}:1935" class="flex.messaging.endpoints.RTMPEndpoint"/> 
</channel-definition>