网友的提问:
项目中用到了dwr消息推送。而服务端是通过一个http请求后 触发dwr中的推送方法。而单个tomcat中。服务器发送的http请求和用户都在一个tomcat服务器中。这样就能精准推送到每个客户端用户 中。现在配置了apache集群后,通过负载均衡,apache把服务器的这个http请求也给分配给一个tomcat容器中。这样的话,在别的tomcat容器中的用户就接受不要消息了。有什么好的办法让这个请求分配给每个tomcat容器。
提取到的知识点是
dwr消息推送、apache集群、负载均衡
http://tonl.iteye.com/blog/1399027
使用DWR反转实现信息推送(一)
除了利用Pushlet实现信息推送外,DWR反转同样可以实现推送。
DWR的简单配置方法已经在以前的博客中写过。所以这里直接贴代码:
新建web工程,这里命名为DwrEg,包结构如下:
web.xml代码如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <servlet>
- <servlet-name>dwr-invoke</servlet-name>
- <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
- <init-param>
- <param-name>debug</param-name>
- <param-value>true</param-value>
- </init-param>
- <init-param>
- <param-name>activeReverseAjaxEnabled</param-name>
- <param-value>true</param-value>
- </init-param>
- <!--
- <init-param>
- <param-name>classes</param-name>
- <param-value>java.lang.Object</param-value>
- </init-param> -->
- </servlet>
- <servlet-mapping>
- <servlet-name>dwr-invoke</servlet-name>
- <url-pattern>/dwr/*</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>client.html</welcome-file>
- </welcome-file-list>
- </web-app>
dwr.xml代码如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr//dwr20.dtd">
- <dwr>
- <allow>
- <create javascript="myrevsrse" creator="new">
- <param name="class" value="com.src.MyReverse"/>
- </create>
- </allow>
- </dwr>
MyReverse.java代码如下:
- package com.src;
- import java.util.Collection;
- import org.directwebremoting.ScriptBuffer;
- import org.directwebremoting.ScriptSession;
- import org.directwebremoting.ServerContext;
- import org.directwebremoting.ServerContextFactory;
- import org.directwebremoting.WebContext;
- import org.directwebremoting.WebContextFactory;
- import org.directwebremoting.proxy.dwr.Util;
- public class MyReverse {
- public void sendMes(String mes){
- System.out.println("kao shi si bestllll...");
- send("系统消息:"+mes);
- }
- public void send(final String output) {
- org.directwebremoting.WebContext web = WebContextFactory.get();
- String page = web.getServletContext().getContextPath()+"/client.html";
- Collection sessions = web.getScriptSessionsByPage(page);
- System.out.println("size=="+sessions.size());
- Util utilAll = new Util(sessions);
- utilAll.addFunctionCall("callBack", output); //callBack是client.jsp里面的javascript函数,output是传递过去的参数
- //utilAll.setValue("news_id", output, false);
- //这种方法也可以,直接将client.html里id为news_id的textarea的值设置为output的值
- }
- public void noticeNewOrder(int id) {
- WebContext wctx = WebContextFactory.get();
- ScriptBuffer script = new ScriptBuffer();
- script.appendScript("receiveMessages(")
- .appendData(id)
- .appendScript(");");
- ServerContext sctx = ServerContextFactory.get(wctx.getServletContext());
- Collection<ScriptSession> pages = sctx.getScriptSessionsByPage("/DwrEg/client.html");
- for (ScriptSession session : pages) {
- session.addScript(script);
- }
- }
- }
client.html代码如下:
- <html>
- <script type="text/javascript" src="dwr/engine.js"></script>
- <script type="text/javascript" src="dwr/util.js"></script>
- <head>
- <script type="text/javascript">
- function callBack(data){
- alert(data);
- }
- function receiveMessages(id) {
- $('orderNotice').innerHTML = "收到id为" + id + "的新订单!";
- $('orderNotice').show();
- }
- </script>
- </head>
- <body onload="dwr.engine.setActiveReverseAjax(true);">
- <textarea rows="20" cols="20" id="news_id"></textarea>
- <br />
- <div id="orderNotice"></div>
- </body>
- </html>
推送界面dopush.html的代码如下:
- <html>
- <script type="text/javascript" src="dwr/engine.js"></script>
- <script type="text/javascript" src="dwr/util.js"></script>
- <script type="text/javascript" src="dwr/interface/myrevsrse.js"></script>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>Insert title here</title>
- <script type="text/javascript">
- function sendnews(){
- var new_content = dwr.util.getValue("newcontent");
- myrevsrse.sendMes(new_content);
- }
- function sendinfo(){
- myrevsrse.noticeNewOrder(12);
- }
- </script>
- </head>
- <body>
- <input type="text" name="newcontent">
- <input type = "button" value="发消息" onclick="sendnews()"/>
- <br />
- <input type = "button" value="send 2" onclick="sendinfo()"/>
- <br />
- </body>
- 同样,这里的问题也是怎么实现点对点的信息推送,这儿只是实现了向所有的clent.html页面推送信息,以后接着总结
相关推荐
dwr消息推送功能。可以实现实时消息推送
DWR消息推送简单实例。maven工程。
使用dwr+spring实现消息推送 。
dwr消息推送 dwr消息推送 dwr消息推送 dwr消息推送 dwr消息推送 dwr消息推送
以后台向前台页面推送消息的一个完整实例工程,采用了spring、dwr反转,实现的是后台向前台不断推送消息,并管理相关用户退出;可以用在如定时任务的桌面消息提醒之类的场景。改变传统的前台定时刷新/请求后台的工作...
使用dwr实现服务器的消息推送。 详细说明了服务器向前台推送消息的步骤,绝对有用。
实现 Dwr 服务器推送实现 Dwr 服务器推送实现 Dwr 服务器推送实现 Dwr 服务器推送实现 Dwr 服务器推送
DWR 完整demo,将后台执行的内容消息时时推送到前端页面显示
springMVC+dwr技术实现消息推送实例,简单实例演示如何用dwr实现后台向前台主动推送消息
该文档介绍了dwr实现消息推送的具体步骤,希望对大家有所帮助,若有不明白的地方,可以给我发消息,小弟能解答的一定解答。
dwr 消息推送例子,仅供参考 ,,,,
项目集成struts2的jar包,dwr框架所用jar包,在struts框架下完成增删改查,在dwr框架下完成消息的推送,sqlserver数据库
dwr3,推送消息,指定用户推送demo
(java语言)struts+dwr 详细推送,类似微博那种,别人给你的动态,在你的页面提醒你。推送消息。各位别嫌弃分数高,物有所值。我每一个上传的东西都是真实可靠地,大家可以查看我以往的东西。 希望能给大家带来帮助...
包含了dwr推送技术的详细介绍 和 一个基于dwr推送技术的聊天实例
实现一个页面发消息,其他页面也能收到发的消息
DWR服务器推送技术(实时),能实时查看注册的用户和收发的消息
springMvc + dwr 注解 实现消息推送 ,支持单个用户精确推送以及指定成员.群推送. 不需要任何配置修改,即可使用
里面有详细的注释说明,主要实现DWR推送、线程监听、事件监听、主动推送。。写得不好,请见谅。。然后有个特别需要注意的,部署好项目以后,访问的方式是:http://localhost:9999/MonitorSystem/indexTo,特别注意...