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

blazeds实现消息推送的实例

发布时间:2020-12-15 04:39:13 所属栏目:百科 来源:网络整理
导读:package com; import flex.messaging.MessageBroker; import flex.messaging.messages.AsyncMessage; import flex.messaging.util.UUIDUtils; /** ?* @文件名称: MessageBroker.java ?* @文件描述: 实现消息推送 ?* @版权所有: (C)2009-2010 ?* @完成日期:

package com;

import flex.messaging.MessageBroker;
import flex.messaging.messages.AsyncMessage;
import flex.messaging.util.UUIDUtils;


/**
?* @文件名称: MessageBroker.java
?* @文件描述: 实现消息推送

?* @版权所有: (C)2009-2010
?* @完成日期: 2010-1-11?
?* @公司:
?* @作者: 王刚
?* @版本: v1.0
?*/
public class MessageFactory {
?private String _DESTINATION_NAME = "feed";
?
?public void sendMessage(String message,String subtopic) {
??String clientID = UUIDUtils.createUUID(false);
??MessageBroker msgBroker = MessageBroker.getMessageBroker(null);
??AsyncMessage msg = new AsyncMessage();
??msg.setDestination(_DESTINATION_NAME);
??msg.setHeader("DSSubtopic",subtopic);
??msg.setClientId(clientID);
??msg.setMessageId(UUIDUtils.createUUID());
??msg.setTimestamp(System.currentTimeMillis());
??msg.setBody(message);
??msgBroker.routeMessageToService(msg,null);?
??
?}
?public String get_DESTINATION_NAME() {
??return _DESTINATION_NAME;
?}
?public void set_DESTINATION_NAME(String _destination_name) {
??_DESTINATION_NAME = _destination_name;
?}
?


}

?

?

?

/*
* Used to push data to the client.
*/

package com;

?

import flex.messaging.MessageBroker;
import flex.messaging.messages.AsyncMessage;
import flex.messaging.util.UUIDUtils;

public class TestMessage extends Thread
{
?public boolean running = true;
?
?private static int _FEED_INTERVAL = 10000;?// Interval in milliseconds to push the data.
?private MessageFactory messageFactory;
?
?public void run()
?{
??String clientID = UUIDUtils.createUUID(false);
??while (running)
??{
???
???System.out.print("/////////////////消息测试77------");???

???messageFactory=new MessageFactory();
???messageFactory.set_DESTINATION_NAME("feed");
???messageFactory.sendMessage("群消息推!!001","allids");
???messageFactory.sendMessage("组消息推!!002","groupids");
???messageFactory.sendMessage("个人消息推!!003","aloneids");
???
???
???try
???{
????Thread.sleep(_FEED_INTERVAL);
???}
???catch (InterruptedException e)
???{
???}

??}
?}
}

?

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>

messaging-config.xml:

?

<?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" default="true"/>-->
?</adapters>
?<destination id="security-check">
??<properties>
???<server>
????<allow-subtopics>true</allow-subtopics>
????<subtopic-separator>.</subtopic-separator>
???</server>
??</properties>
??<channels>
???<channel ref="my-polling-amf" />
???<channel ref="my-streaming-amf" />
??</channels>
?</destination>


?<destination id="feed">
??<properties>
???<network>
????<session-timeout>0</session-timeout>
???</network>
???<server>
????<allow-subtopics>true</allow-subtopics>
????<subtopic-separator>.</subtopic-separator>
????<max-cache-size>1000</max-cache-size>
????<message-time-to-live>0</message-time-to-live>
????<durable>false</durable>
???</server>
??</properties>
??<channels>
???<channel ref="my-polling-amf" />
???<channel ref="my-streaming-amf" />
??</channels>??
?</destination>

?<default-channels>
??<channel ref="my-polling-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="messaging-config.xml" />
??<!--
???<service-include file-path="remoting-config-demo.xml" />
???<service-include file-path="proxy-config.xml" />
???<service-include file-path="messaging-config.xml" />?
???-->
?</services>
?
?<security>
??<login-command class="flex.messaging.security.TomcatLoginCommand" server="Tomcat"/>
??<!-- Uncomment the correct app server
???<login-command class="flex.messaging.security.TomcatLoginCommand" server="JBoss">
???<login-command class="flex.messaging.security.JRunLoginCommand" server="JRun"/>???????
???<login-command class="flex.messaging.security.WeblogicLoginCommand" server="Weblogic"/>

???<login-command class="flex.messaging.security.WebSphereLoginCommand" 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-amf" class="mx.messaging.channels.AMFChannel">
???<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
??</channel-definition>

??<channel-definition id="my-secure-amf" class="mx.messaging.channels.SecureAMFChannel">
???<endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/>
???<properties>
????<add-no-cache-headers>false</add-no-cache-headers>
???</properties>
??</channel-definition>

??<channel-definition id="my-polling-amf" class="mx.messaging.channels.AMFChannel">
???<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amfpolling" class="flex.messaging.endpoints.AMFEndpoint"/>
???<properties>
????<polling-enabled>true</polling-enabled>
????<polling-interval-seconds>4</polling-interval-seconds>
???</properties>
??</channel-definition>
??<channel-definition id="my-streaming-amf" class="mx.messaging.channels.StreamingAMFChannel">
???<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/streamingamf" class="flex.messaging.endpoints.StreamingAMFEndpoint"/>
???<properties>
????<idle-timeout-minutes>0</idle-timeout-minutes>
????<max-streaming-clients>10</max-streaming-clients>
????<server-to-client-heartbeat-millis>5000</server-to-client-heartbeat-millis>
????<user-agent-settings>
?????<user-agent match-on="MSIE" kickstart-bytes="2048" max-streaming-connections-per-session="10"/>
?????<user-agent match-on="Firefox" kickstart-bytes="2048" max-streaming-connections-per-session="10"/>
????</user-agent-settings>
???</properties>
??</channel-definition>
??<!--
???<channel-definition id="my-http" class="mx.messaging.channels.HTTPChannel">
????<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/http" class="flex.messaging.endpoints.HTTPEndpoint"/>
???</channel-definition>

???<channel-definition id="my-secure-http" class="mx.messaging.channels.SecureHTTPChannel">
????<endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/httpsecure" class="flex.messaging.endpoints.SecureHTTPEndpoint"/>
????<properties>
?????<add-no-cache-headers>false</add-no-cache-headers>
????</properties>
???</channel-definition>
???-->
?</channels>

?<logging>
??<target class="flex.messaging.log.ConsoleTarget" 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>

?

flex

?

?<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
????layout="absolute"
????creationComplete="init()"
????height="150"
????width="300"
????fontSize="12">
?<mx:Script>
??<![CDATA[
???import mx.messaging.FlexClient;
???import mx.messaging.ChannelSet;
???import mx.controls.Alert;
???import mx.messaging.Consumer;
???import mx.messaging.events.MessageEvent;
???import mx.rpc.events.FaultEvent;
???import mx.rpc.events.ResultEvent;
???import mx.rpc.remoting.mxml.RemoteObject;

???private var allSubtipic:String="allids";
???private var groupSubtipic:String="groupids";
???private var aloneSubtipic:String="aloneids";
???private var destination:String="feed";

???private function init():void
???{
????if (Application.application.parameters.allSubtipic)
?????allSubtipic=Application.application.parameters.allSubtipic;
????if (Application.application.parameters.groupSubtipic)
?????groupSubtipic=Application.application.parameters.groupSubtipic;
????if (Application.application.parameters.aloneSubtipic)
?????aloneSubtipic=Application.application.parameters.aloneSubtipic;
????if (Application.application.parameters.destination)
?????destination=Application.application.parameters.destination;

?

????allSend();
????groupSend();
????aloneSend();
????ExternalInterface.call("messageTest","消息")
???}

???/**
??? * 群消息
??? * */
???public function allSend():void
???{
????var consumer:Consumer=new Consumer();
????consumer.destination=destination;
????consumer.subtopic=allSubtipic;
????consumer.addEventListener(MessageEvent.MESSAGE,taskSendMessageHandler);
????consumer.subscribe();
???}

???public function groupSend():void
???{
????var consumer:Consumer=new Consumer();
????consumer.destination=destination;
????consumer.subtopic=groupSubtipic;
????consumer.addEventListener(MessageEvent.MESSAGE,taskSendMessageHandler);
????consumer.subscribe();
???}

???public function aloneSend():void
???{
????var consumer:Consumer=new Consumer();
????consumer.destination=destination;
????consumer.subtopic=aloneSubtipic;
????consumer.addEventListener(MessageEvent.MESSAGE,taskSendMessageHandler);
????consumer.subscribe();
???}

???private function taskSendMessageHandler(event:MessageEvent):void
???{
????var mess:String=event.message.body.toString();
????Alert.show(mess);
????trace(mess);
????var s:String=ExternalInterface.call("messageTest",mess);
????trace(s + "--------");

???} ??]]> ?</mx:Script> ?<mx:Button click="ExternalInterface.call('messageTest','消息')"/> ?<mx:Label x="123.5" ???? y="10" ???? text="消息测试" ???? fontSize="12"/> </mx:Application>

(编辑:李大同)

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

    推荐文章
      热点阅读