2009-06-26 5 views
2

FluorineFX를 사용하여 Flex/.Net에서 매우 간단한 채팅 응용 프로그램을 만들려고하는데 작동하지 않습니다.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> 

내 서비스-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를 구성해야합니까? (flourinefx 설정을 넘어서서 RemotingService를 사용할 수 있습니까?) flourine.log에는 응답이 없습니다.

+1

아마도 방화벽이 포트 1950을 차단하고있을 수 있습니다. –

답변

2

RTMP에 AMFChannel/AMFEndpoint를 사용할 수 없습니다. service-config.xml에서 아래 코드를 대신 사용해보십시오.

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