当前位置: 代码迷 >> Java Web开发 >> dwr为甚麽不能再不同页面同步消息,总是延时?该怎么解决
  详细解决方案

dwr为甚麽不能再不同页面同步消息,总是延时?该怎么解决

热度:177   发布时间:2016-04-17 00:52:40.0
dwr为甚麽不能再不同页面同步消息,总是延时?
问题是这样的

我首先打开 2个网页http://localhost/chat/test.jsp

然后再其中一个输入1在这个网页显示啦,另一个没有显示,
然后我在第二个网页输入2,然后显示 1 2  
也就是把第一次的也显示啦,为甚麽我第一次的时候没有同步呢?




test.jsp
HTML code
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><script type='text/javascript' src='<%=request.getContextPath()%>/dwr/interface/Chat.js'></script> <script type='text/javascript' src='<%=request.getContextPath()%>/dwr/engine.js'></script> <script type='text/javascript' src='<%=request.getContextPath()%>/dwr/util.js'></script> <script type='text/javascript' src='js/chat.js'></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>chat</title></head><body onload="init()">    <textarea readonly="readonly" rows="20" cols="30"  id="content">    </textarea>    <input type="text" id="input"  />    <button onclick="send()">发送</button></body></html>


chat.js
JScript code
/** *  *///测试是否全为空格init=function(){        dwr.engine.setActiveReverseAjax =true;};isEmpty=function(string){    return string==""||string.match(/[^\s]/)==null;};send=function(){    var input=dwr.util.getValue("input");    if(!isEmpty(input)){        Chat.send(input);    }};update=function(messageInformation){    //    var last=dwr.util.getValue("content");//    dwr.util.setValue("content",last+"\n"+sendMessage);    alert(messageInformation.message);    var last=document.getElementById("content").innerHTML;    if(last!=null){        last+="\n";    }    var totalMessage=messageInformation.ip+":"+messageInformation.message+"\n"+"  "+messageInformation.date;    document.getElementById("content").innerHTML=last+totalMessage;};


Chat。java
Java code
package mychat;import java.text.SimpleDateFormat;import java.util.Date;import org.directwebremoting.*;import org.directwebremoting.annotations.RemoteMethod;import org.directwebremoting.annotations.RemoteProxy;import org.directwebremoting.annotations.ScriptScope;@RemoteProxy(scope=ScriptScope.APPLICATION)public class Chat  {    public Chat() {        super();        // TODO Auto-generated constructor stub//        Util.execute(this);    }    @RemoteMethod    public  void send(final String sendMessage) {        // TODO Auto-generated method stub        String ip=WebContextFactory.get().getHttpServletRequest().getLocalAddr();        final MessageInformation mi=new MessageInformation(ip,sendMessage,new SimpleDateFormat("h:mm a").format(new Date()).toString());        Browser.withCurrentPage((new Runnable() {            public void run() {                System.out.println(mi);                ScriptSessions.addFunctionCall("update", mi);            }        }));    }    }








































------解决方案--------------------
  相关解决方案