比如说有a,b,c三个人同时操作同一个系统(tomcat容器),
  当a向系统新增一条记录后,   
  怎样在b,c的页面上即时自动得到a新增的记录。   
  一般刷新一下b,c的页面就可得到a新增的记录,   
  问题是怎样才能a新增记录后,b,c页面马上自动刷新?   
    
  以前我们的做法是让b,c页面定时自动刷新,显然这种有事没事都去刷新页面,查数据库的做法很浪费资源。  或者用socket,又如何在tomcat启动时,启动指定的socket?browse客户端,又如何与socket通信?jsp中套入Applet,调用socketclient行得通么?
    
  这里有哪位仁兄有类似的开发经历?有没人知道用什么方法或是哪里有相关资料!

解决方案 »

  1.   

    B/S耶...你用C/S好了,或者用别的控件吧,因为有一些网上聊天室...所以可以问问那些情况.
      

  2.   

    只能在B,C的浏览器端发起刷新,不过有些变通的办法可以降低刷新对服务器的压力,比如用页面的JS脚本问问服务器是否需要刷新,刷新时也用JS脚本,只提取新增的数据,然后用JS插入到页面中。看看AJAX的书吧
      

  3.   

    在BS结构的应用中,相对“实时”的刷新原则上说是不可能的。
    有解决的办法,比如通过ActiveX控件、Applet等和服务器建立长连接,但是要求用户安装ActiveX控件(并且浏览器限制在Windows下的IE)或者java运行时。
    还有准“实时”的办法,就是用客户端脚本,通过XmlHttpRequest这种东西来定时发送请求,比如每秒一次,来查询页面数据的版本更新。这样对客户端浏览器的限制较少,但是有较大的延时;至于频繁的发送请求带来的服务器压力和客户端处理器负载,问题倒不是太大。
    所以比较好的方案是,在服务器端写入数据的时候,维护一个缓存,然后其他页面通过脚本的请求来获得新版本。
      

  4.   

    用socket
    刷新后通知客户端的浏览器
      

  5.   

    要在BS里用实时刷新的话,我想只有AJAX了。
    AJAX可以做到页面的局部刷新,异步交互!很强的!
    可以找本AJAX的书看看。
      

  6.   

    可以使用观察者模式,在页面A新增数据后,将服务端程序某个变量的值设为请更新数据,页面B、C通过ajax轮询服务端的更新变量,若更新变量设为请更新的话,则从服务端获取数据。实现页面的刷新,不过这样的话对客户端负荷较大。
    不知道高手们怎么看
      

  7.   

    to:QQTancheng()
    能贴代码出来么?实在没有头绪!
    -----------------------------------
    to:weihthchk(Spectrum) 或  Rachael1001(野谷子) 
    如果用applet的话
    跟服务器的的socket怎么建立?
    applet怎么访问页面?
      

  8.   

    如果用applet的话
    跟服务器的的socket怎么建立?
    applet怎么访问页面?----------------------------------------------------------------------------------
    高分求教:如何实时刷新 
    ----------------------------------------------------------------------------------比如说有a,b,c三个人同时操作同一个系统(tomcat容器),
      当a向系统新增一条记录后,   
      怎样在b,c的页面上即时自动得到a新增的记录。   
      一般刷新一下b,c的页面就可得到a新增的记录,   
      问题是怎样才能a新增记录后,b,c页面马上自动刷新?   
        
      以前我们的做法是让b,c页面定时自动刷新,显然这种有事没事都去刷新页面,查数据库的做法很浪费资源。  或者用socket,又如何在tomcat启动时,启动指定的socket?browse客户端,又如何与socket通信?jsp中套入Applet,调用socketclient行得通么?
        
      这里有哪位仁兄有类似的开发经历?有没人知道用什么方法或是哪里有相关资料!
    ----------------------------------------------------------------------------------在BS结构的应用中,相对“实时”的刷新原则上说是不可能的。
    有解决的办法,比如通过ActiveX控件、Applet等和服务器建立长连接,但是要求用户安装ActiveX控件(并且浏览器限制在Windows下的IE)或者java运行时。
    还有准“实时”的办法,就是用客户端脚本,通过XmlHttpRequest这种东西来定时发送请求,比如每秒一次,来查询页面数据的版本更新。这样对客户端浏览器的限制较少,但是有较大的延时;至于频繁的发送请求带来的服务器压力和客户端处理器负载,问题倒不是太大。
    所以比较好的方案是,在服务器端写入数据的时候,维护一个缓存,然后其他页面通过脚本的请求来获得新版本。
      

  9.   

    以前有过类似系统.数据库(Sql Server),程序C/S.
    数据库建立扩张存储过程(里面是用socket发数据),数据库有一张表,用来记录登陆的用户的ip地址. 另外,在要刷新的表上建立触发器(主要是更新和插入的),表中有数据变化时,调用扩展存储过程,立即给客户端发socket消息,消息包中封装要刷新数据的主键.客户短收到消息后只刷新变化部分的记录(不要用敏感控件). 如果并发和访问量较大,服务器也会死去(感觉效率也上不去)
      

  10.   

    Web上感觉用AjaxAnyWhere定时局部刷新比较好.
    在网上找找AjaxAnyWhere的资料,这个应该很多.
      

  11.   

    象这种东西,最典型的就是sina直播间了
    它事通过定时刷新界面做到的。而不是服务器的工作。
      

  12.   

    如果是纯B/S好象难点  只能用页面刷新  
    或者 写个listener A对数据操作时候  BC刷新(不过好象难点)
    ajax可以实现
      

  13.   

    最方便是使用AJAX。看看DWR 2.0的范例,里面就有一个关于实时聊天的程序,把它的源代码拿来改改。
      

  14.   

    看下DWR例子中的chat,用到了推技术。
      

  15.   

    使用 DWR2 的server push 技术
    本人用它编写了类似QQ的web实时消息系统
    网上有丰富的例子
      

  16.   

    告诉我你的email, 我给你发一个例子
      

  17.   

    这个贴子我可能不会回来看,你给我的信箱来封信最好:[email protected]
      

  18.   

    晕我才看到
    你就不回来看了?哥们B/S一样做
    也不用AJAX
    你搜索“任务调度”
    有一个框架就是解决这个问题的
    我也正在弄