加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

案例学习BlazeDS+Spring之十:Chat

发布时间:2020-12-15 04:38:53 所属栏目:百科 来源:网络整理
导读:Chat: 该DEMO展示的是BlazeDS的消息服务,是一个使用发布/订阅者模式的简单聊天室。 一、运行DEMO: 1、运行程序:http://localhost:8400/spring-flex-testdrive/chat/index.html; 2、在另一个浏览器窗口访问同样的URL,打开第二个chat程序实例。 3、在一

Chat:

该DEMO展示的是BlazeDS的消息服务,是一个使用发布/订阅者模式的简单聊天室。


一、运行DEMO:
1、运行程序:http://localhost:8400/spring-flex-testdrive/chat/index.html;
2、在另一个浏览器窗口访问同样的URL,打开第二个chat程序实例。
3、在一个chat客户端输入消息,单击“Send”,这个消息显示在两个chat客户端里。

二、理解代码:

1、chat.mxml的Producer/Consumer

消息服务管理一组Flex客户端能发布和订阅的destination集合。Flex提供Producer和Consumer两个组件用于发布和订阅destination。使用Consumer类的subscribe方法来订阅目标(destination),当有消息发布到你订阅的目标时,消息事件会在Consumer上触发。
<mx:Producer id="producer" destination="chat" channelSet="{cs}"/>
<mx:Consumer id="consumer" destination="chat" channelSet="{cs}" message="messageHandler(event.message)"/>

2、chat.mxml channelSet
Producer和Consumer的channelSet是cs,destination是chat。
ChanelSetAPI允许你在运行时动态的定义端点,在这个例子中,端点的URL是硬编码在程序中的,在真实情况下,客户端程序通常动态读入这些参数。例如,客户端程序在启动时使用HTTPService加载XML文件读入这些参数。加入到channelSet的第一个通道作为首选通道用来尝试连接服务器,如果首选通道失败,系统将尝试使用定义在channelSet中的第二个通道来连接。
??????? <mx:ChannelSet id="cs">
??????????? <mx:StreamingAMFChannel url="http://localhost:8400/spring-flex-testdrive/messagebroker/streamingamf"/>
??????????? <mx:AMFChannel url="http://localhost:8400/spring-flex-testdrive/messagebroker/amflongpolling"/>

??????????? <mx:AMFChannel url="http://localhost:8400/spring-flex-testdrive/messagebroker/amfpolling"/>
??????? </mx:ChannelSet>
程序在启动时consumer即订阅chat消息。
consumer.subscribe();???

3、chat.mxml 异步消息

发送消息是通过建立一个异步消息,由product发送出去。
var message:IMessage = new AsyncMessage();
message.body.userId = userId.text;
message.body.chatMessage = msg.text;
producer.send(message);

AsyncMessage的body是Object类型,是消息正文包含需要传递到远程目标的特定数据。

4、consumer接收消息事件

当有消息事件发生时,会触发consumer上的message事件,程序通过messageHandler来处理。
private function messageHandler(message:IMessage):void
{
??? log.text += message.body.userId + ": " + message.body.chatMessage + "n";???
}

5、flex-servlet.xml

打开flex-servlet.xml,查看消息服务配置。消息服务使用<flex:message-broker />里的<flex:message-service />来配置。?
??? <flex:message-broker>
??????? <flex:message-service
??????????? default-channels="my-streaming-amf,my-longpolling-amf,my-polling-amf" />
??????? <flex:secured />
??? </flex:message-broker>
??? message-service的默认通道my-streaming-amf,my-polling-amf在WEB-INFflexservices-config.xml中定义。

6、chat消息服务配置

在flex-servlet.xml中,使用<flxe:message-destination id="chat" />来配置Chat的消息服务。

三、小结:

使用BlazeDS的消息服务做聊天室,在后台只需做消息服务配置即可,发布/订阅者模式的核心部分已由BlazeDS实现,但这只是简单的聊天程序罢了。消息服务的这种特性,在后面的几个DEMO中还有应用到。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读