java服务器向flex客户端一对一推送数据
2011-05-06 19:23
375 查看
结合其他前辈所编写的采用BlazeDS的发布-订阅机制实现的一对多的实现,在此基础上采用flex的消息服务的选择过滤功能实现一对一.(其中Tick文件和TickCacheServlet主要部分和flex_blazeds.mxml部分代码为网上前辈所作)
Tick.java
flex_blazeds.mxml
triggerServlet.mxml为促发servlet服务
在services-config.xml中添加channel
至此大功告成,首先将项目发布到tomcat上,然后运行triggerservlet和flex_blazeds.mxml,在未发布(触发)之前,订阅端flex_blazeds.mxml是接收不到任何消息,触发之后则能够接到消息.
该工作完成感谢网上各位前辈的经验给我的指导,在此有所转载望前辈谅解
Tick.java
package cn.bestwiz.design.tc.servlet; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.bestwiz.design.tc.Tick; import flex.messaging.MessageBroker; import flex.messaging.messages.AsyncMessage; import flex.messaging.util.UUIDUtils; public class TickCacheServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static FeedThread thread; protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // String cmd = req.getParameter("cmd"); // if (cmd.equals("start")) { // start(); // } // if (cmd.equals("stop")) { // stop(); // } doPost(req, resp); } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { start(); } public void destroy() { super.destroy(); } public void init() throws ServletException { super.init(); } public void start() { if (thread == null) { thread = new FeedThread(); thread.start(); } System.out.println("start!!"); } public void stop() { thread.running = false; thread = null; } public static class FeedThread extends Thread { public boolean running = true; public void run() { MessageBroker msgBroker = MessageBroker.getMessageBroker(null); String clientID = UUIDUtils.createUUID(); int i = 0; while (running) { Tick tick = new Tick(); tick.setSeqno(String.valueOf(i)); System.out.println(i); AsyncMessage msg = new AsyncMessage(); msg.setDestination("tick-data-feed"); msg.setHeader(AsyncMessage.SUBTOPIC_HEADER_NAME, "tick"); /* * 在此添加过滤 */ Map headers=new HashMap(); headers.put("prop1", 10); msg.setHeaders(headers); msg.setClientId(clientID); msg.setMessageId(UUIDUtils.createUUID()); msg.setTimestamp(System.currentTimeMillis()); msg.setBody(tick); msgBroker.routeMessageToService(msg, null); try { Thread.sleep(2000); } catch (InterruptedException e) { } } } } }
flex_blazeds.mxml
package { [RemoteClass(alias="cn.bestwiz.design.tc.Tick")] [Bindable] public class Tick { public var askPrice:Number; public var bidPrice:Number; public var midPrice:Number; public var tickTime:Date;; public var seqno:String; } }
triggerServlet.mxml为促发servlet服务
<destination id="tick-data-feed"> <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>
在services-config.xml中添加channel
在web.xml文件中添加 <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>TickCacheServlet</servlet-name> <servlet-class>cn.bestwiz.design.tc.servlet.TickCacheServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>TickCacheServlet</servlet-name> <url-pattern>/TickCacheServlet</url-pattern> </servlet-mapping>
至此大功告成,首先将项目发布到tomcat上,然后运行triggerservlet和flex_blazeds.mxml,在未发布(触发)之前,订阅端flex_blazeds.mxml是接收不到任何消息,触发之后则能够接到消息.
该工作完成感谢网上各位前辈的经验给我的指导,在此有所转载望前辈谅解
相关文章推荐
- java服务器向flex客户端一对一推送数据
- java web服务器推送数据到客户端(pushlet)
- 解如何利用 XML 和 JavaScript Object Notation 在 Ajax 客户端和 Java 服务器之间传输数据。
- 服务器主动向客户端推送消息-java之comet4j实现
- flex采用blazeds实现服务器向客户端推数据
- 数据通信之数据转码字节映射加密发送:客户端c++和服务器java
- java做服务器,android做客户端,实现数据传输
- 收藏——Java导出数据到excel保存在服务器及客户端下载
- Java SSE 服务器推送WEB页面接收数据
- java SDK ,上传、读取 基本类型数据通过服务器(客户端代码)
- Flex采用blazeds实现服务器向(特定标识的)客户端推数据(基于consumer模式)
- 解如何利用 XML 和 JavaScript Object Notation 在 Ajax 客户端和 Java 服务器之间传输数据(代码)(Oracle)。
- Java Web服务器向Android客户端返回数据(服务器端)
- 在Java stream层面上探究客户端请求服务器数据
- 在java网络编程中实现服务器和客户端一对一的聊天
- Flex 与Java数据交互-发布服务器
- Java服务器转换C#客户端传过来的int型数据
- Web应用从服务器主动推送数据到客户端有哪些方式?
- 数据通信之数据转码字节映射加密发送:客户端c++和服务器java
- android客户端+JAVA WEB服务器实现json数据解析