一個利用blazeds的message機制完成的一個chat聊天小程式(flex與java分開的那種):
下載地址:http://yunpan.cn/QDzrutaytbDrq
程式主要部分:
1、聊天介面
訊息本身包含訊息頭和訊息體,訊息頭的格式是固定的,訊息體的內容可以隨意寫
Message Service允許Flex用戶端發行就緒(Publish)和訂閱(Subscribe)訊息,相應的,用戶端的被稱為生產者(Producer)和消費者(Consumer),其實也就是發送和接受訊息了。
<?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="consumer.subscribe()"><fx:Script><![CDATA[import mx.controls.Alert;import mx.messaging.events.MessageFaultEvent;import mx.messaging.messages.AsyncMessage;import mx.messaging.messages.IMessage;private function send():void{var message:IMessage = new AsyncMessage();message.body.chatMessage = msg.text;producer.send(message);msg.text = "";}private function messageHandler(message:IMessage):void{log.text += message.body.chatMessage + "\n";}protected function producer_faultHandler(event:MessageFaultEvent):void{Alert.show(event.faultString);}]]></fx:Script><fx:Declarations><!-- 將非可視元素(例如服務、值對象)放在此處 --><s:Producer id="producer" destination="chat" fault="producer_faultHandler(event)"/><s:Consumer id="consumer" destination="chat" message="messageHandler(event.message)"/></fx:Declarations><s:Panel title="Chat" width="50%" height="50%"><s:controlBarContent><s:TextInput id="msg" width="100%" enter="send()"/><s:Button label="Send" click="send()"/> </s:controlBarContent><s:TextArea id="log" width="100%" height="100%"/></s:Panel></s:Application>
當一個訊息被發到已訂閱的目的地(destination)時,就會觸發一個用戶端的message事件。
發布的任何訊息會發給所有訂閱的人,即使是生產者自己。
如果某一訂閱者只想收到特定的訊息,可以在訂閱時使用selecor屬性來指定過濾條件,只有合格訊息才會被伺服器轉寄。
如果想要伺服器產生訊息,可以產生一個flex.messaging.messages.AsyncMessage類的執行個體,用flex.messaging.MessageBroker發送出去。
2、配置
<?xml version="1.0" encoding="UTF-8"?><service id="message-service" class="flex.messaging.services.MessageService"> <adapters> <adapter-definition id="actionscript" class="flex.messaging.services.messaging.adapters.ActionScriptAdapter" default="true" /> <adapter-definition id="jms" class="flex.messaging.services.messaging.adapters.JMSAdapter"/> </adapters> <default-channels> <channel ref="my-polling-amf"/> </default-channels><destination id="chat"/></service>
-----------------------------------------------華麗麗的分割線-----------------------------------------------