读书人

Flex+BlazeDS+AIR+StreamingAMFChanne

发布时间: 2012-10-11 10:16:10 作者: rapoo

Flex+BlazeDS+AIR+StreamingAMFChannel消息服务的即时聊天通信
采用BlazeDS的StreamingAMFChannel 消息服务的聊天通信,这种方式是最快和延迟最小的了。

BusyChat.mxml文件:

<?xml version="1.0" encoding="utf-8"?><s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" width="560" creationComplete="consumer.subscribe();">  <fx:Script>  <![CDATA[   import mx.messaging.messages.AsyncMessage;   import mx.messaging.messages.IMessage;      private function send():void   {    var message:IMessage = new AsyncMessage();    message.body.chatMessage = msg.text+consumer.clientId;    producer.send(message);    msg.text = "";       }          private function messageHandler(message:IMessage):void   {    log.text += message.body.chatMessage + "\n";    }     ]]> </fx:Script>  <fx:Declarations>  <mx:ChannelSet id="cs">   <mx:StreamingAMFChannel url="http://localhost:8050/BusyChat/messagebroker/streamingamf"/>  </mx:ChannelSet>  <mx:Producer id="producer"  destination="chat" channelSet="{cs}"/>  <mx:Consumer id="consumer" destination="chat" channelSet="{cs}" message="messageHandler(event.message)"/> </fx:Declarations>   <s:Panel title="Chat Test!"   x="20" y="19" width="518" height="295">  <s:TextArea id="log" x="19" y="11" width="473" height="166"/>    <s:TextInput id="msg" x="19" y="191" width="377" height="46" enter="send()"/>  <s:Button x="411" y="192" label="发送消息" height="43" width="77" click="send()"/>  </s:Panel> </s:WindowedApplication>


BlazeDS服务器端配置文件
messaging-config.xml文件:
<?xml version="1.0" encoding="UTF-8"?><service id="message-service"    default="true" />        <adapter-definition id="jms" />        </channels>    </destination>   </service>

proxy-config.xml:
<?xml version="1.0" encoding="UTF-8"?><service id="proxy-service"    default="true"/>        <adapter-definition id="soap-proxy" name="code"><?xml version="1.0" encoding="UTF-8"?><service id="remoting-service"    default="true"/>    </adapters>    <default-channels>        <channel ref="my-amf"/>    </default-channels></service>

services-config.xml文件:
<?xml version="1.0" encoding="UTF-8"?><services-config>    <services>        <service-include file-path="remoting-config.xml" />        <service-include file-path="proxy-config.xml" />        <service-include file-path="messaging-config.xml" />                   <default-channels>        <channel ref="my-streaming-amf"/>     </default-channels>                </services>    <security>        <login-command server="Tomcat"/>        <!-- Uncomment the correct app server        <login-command server="JBoss">  <login-command server="JRun"/>               <login-command server="Weblogic"/>        <login-command server="WebSphere"/>        -->        <!--        <security-constraint id="basic-read-access">            <auth-method>Basic</auth-method>            <roles>                <role>guests</role>                <role>accountants</role>                <role>employees</role>                <role>managers</role>            </roles>        </security-constraint>         -->    </security>    <channels>  <channel-definition id="my-streaming-amf" kickstart-bytes="2048" max-streaming-connections-per-session="1"/>                    <user-agent match-on="Firefox" kickstart-bytes="2048" max-streaming-connections-per-session="1"/>                </user-agent-settings>            </properties>        </channel-definition>          <channel-definition id="my-amf" level="Error">            <properties>                <prefix>[BlazeDS] </prefix>                <includeDate>false</includeDate>                <includeTime>false</includeTime>                <includeLevel>false</includeLevel>                <includeCategory>false</includeCategory>            </properties>            <filters>                <pattern>Endpoint.*</pattern>                <pattern>Service.*</pattern>                <pattern>Configuration</pattern>            </filters>        </target>    </logging>    <system>        <redeploy>            <enabled>false</enabled>            <!--            <watch-interval>20</watch-interval>            <watch-file>{context.root}/WEB-INF/flex/services-config.xml</watch-file>            <watch-file>{context.root}/WEB-INF/flex/proxy-config.xml</watch-file>            <watch-file>{context.root}/WEB-INF/flex/remoting-config.xml</watch-file>            <watch-file>{context.root}/WEB-INF/flex/messaging-config.xml</watch-file>            <watch-file>{context.root}/WEB-INF/flex/data-management-config.xml</watch-file>            <touch-file>{context.root}/WEB-INF/web.xml</touch-file>             -->        </redeploy>    </system></services-config>

web.xml文件:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app>    <display-name>BlazeDS</display-name>    <description>BlazeDS Application</description>    <!-- Http Flex Session attribute and binding listener support -->    <listener>        <listener-class>flex.messaging.HttpFlexSession</listener-class>    </listener>    <!-- MessageBroker Servlet -->    <servlet>        <servlet-name>MessageBrokerServlet</servlet-name>        <display-name>MessageBrokerServlet</display-name>        <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>        <init-param>            <param-name>services.configuration.file</param-name>            <param-value>/WEB-INF/flex/services-config.xml</param-value>       </init-param>        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>MessageBrokerServlet</servlet-name>        <url-pattern>/messagebroker/*</url-pattern>    </servlet-mapping>    <welcome-file-list>        <welcome-file>index.html</welcome-file>        <welcome-file>index.htm</welcome-file>    </welcome-file-list>    <!-- for WebSphere deployment, please uncomment -->    <!--    <resource-ref>        <description>Flex Messaging WorkManager</description>        <res-ref-name>wm/MessagingWorkManager</res-ref-name>        <res-type>com.ibm.websphere.asynchbeans.WorkManager</res-type>        <res-auth>Container</res-auth>        <res-sharing-scope>Shareable</res-sharing-scope>    </resource-ref>    --></web-app>

我的服务器端口是8050,下载文件需要修改为tomcat的端口号。

读书人网 >网络基础

热点推荐