您的位置:程序门 -> java -> j2se / 基础类



高分求教:如何实时刷新


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


高分求教:如何实时刷新[已结贴,结贴人:szuzsq]
发表于:2007-07-14 10:29:30 楼主
比如说有a,b,c三个人同时操作同一个系统(tomcat容器),
    当a向系统新增一条记录后,      
    怎样在b,c的页面上即时自动得到a新增的记录。      
    一般刷新一下b,c的页面就可得到a新增的记录,      
    问题是怎样才能a新增记录后,b,c页面马上自动刷新?      
       
    以前我们的做法是让b,c页面定时自动刷新,显然这种有事没事都去刷新页面,查数据库的做法很浪费资源。

    或者用socket,又如何在tomcat启动时,启动指定的socket?browse客户端,又如何与socket通信?jsp中套入applet,调用socketclient行得通么?
       
    这里有哪位仁兄有类似的开发经历?有没人知道用什么方法或是哪里有相关资料!
发表于:2007-07-14 10:32:031楼 得分:2
b/s耶...你用c/s好了,或者用别的控件吧,因为有一些网上聊天室...所以可以问问那些情况.
发表于:2007-07-14 10:37:502楼 得分:2
学习
发表于:2007-07-14 10:38:183楼 得分:2
b/s怎么可能做到实时呢?
发表于:2007-07-14 10:50:514楼 得分:2
这种方法我以前做的项目中用到过,不知道你说的是不是无状态刷新!
发表于:2007-07-15 04:23:425楼 得分:10
两个方面解决,浏览器部分,把显示实时数据的部分做成无刷新的,客户端定时向服务器查询,但是不是查数据库,而是访问服务器标志,该标志用来标志最近数据是否更新。如果标志显示数据被更新,再查询数据库并返回。
要是这样还觉得不够猛,就需要为核心业务数据在应用服务器上作缓存了,让应用服务器为数据服务器分担些,但这需要对业务抽取准确,这个东西必须给稳定。
要是还想再榨点汁,就是客户端缓存了,也就是每次交互的数据仅仅是变化的数据,比如多了哪条少了那条,由客户端代码更新页面。但是缺点更明显了,客户端变化相对比较频繁,每次变动都给改改改。
发表于:2007-07-15 07:06:506楼 得分:2
让b,c页面定时自动刷新

否则真的没有办法做到了
发表于:2007-07-15 14:15:017楼 得分:2
服务器是不能主动向浏览器发送信息的,所以只有浏览器定时请求数据。
发表于:2007-07-15 18:22:428楼 得分:10
只能在b,c的浏览器端发起刷新,不过有些变通的办法可以降低刷新对服务器的压力,比如用页面的js脚本问问服务器是否需要刷新,刷新时也用js脚本,只提取新增的数据,然后用js插入到页面中。看看ajax的书吧
发表于:2007-07-15 18:51:409楼 得分:2
监听?
发表于:2007-07-15 18:59:1710楼 得分:2
学习~
发表于:2007-07-15 21:23:0711楼 得分:10
在bs结构的应用中,相对“实时”的刷新原则上说是不可能的。
有解决的办法,比如通过activex控件、applet等和服务器建立长连接,但是要求用户安装activex控件(并且浏览器限制在windows下的ie)或者java运行时。
还有准“实时”的办法,就是用客户端脚本,通过xmlhttprequest这种东西来定时发送请求,比如每秒一次,来查询页面数据的版本更新。这样对客户端浏览器的限制较少,但是有较大的延时;至于频繁的发送请求带来的服务器压力和客户端处理器负载,问题倒不是太大。
所以比较好的方案是,在服务器端写入数据的时候,维护一个缓存,然后其他页面通过脚本的请求来获得新版本。
发表于:2007-07-16 03:49:4012楼 得分:2
学习
发表于:2007-07-17 17:21:3013楼 得分:2
这个不是和股票软件一样了,要学习啊!!
发表于:2007-07-17 17:29:0614楼 得分:2
我觉得很多网站都实现了这个阿
比如我们一般看的网上直播等等
发表于:2007-07-17 19:22:0215楼 得分:2
用socket
刷新后通知客户端的浏览器
发表于:2007-07-17 20:07:3716楼 得分:2
要在bs里用实时刷新的话,我想只有ajax了。
ajax可以做到页面的局部刷新,异步交互!很强的!
可以找本ajax的书看看。
发表于:2007-07-17 20:31:4317楼 得分:5
可以使用观察者模式,在页面a新增数据后,将服务端程序某个变量的值设为请更新数据,页面b、c通过ajax轮询服务端的更新变量,若更新变量设为请更新的话,则从服务端获取数据。实现页面的刷新,不过这样的话对客户端负荷较大。
不知道高手们怎么看
发表于:2007-07-30 21:48:2918楼 得分:0
to:qqtancheng()
能贴代码出来么?实在没有头绪!
-----------------------------------
to:weihthchk(spectrum)   或     rachael1001(野谷子)  
如果用applet的话
跟服务器的的socket怎么建立?
applet怎么访问页面?
发表于:2007-07-30 21:54:3519楼 得分:0
如果用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这种东西来定时发送请求,比如每秒一次,来查询页面数据的版本更新。这样对客户端浏览器的限制较少,但是有较大的延时;至于频繁的发送请求带来的服务器压力和客户端处理器负载,问题倒不是太大。
所以比较好的方案是,在服务器端写入数据的时候,维护一个缓存,然后其他页面通过脚本的请求来获得新版本。
发表于:2007-07-30 21:58:0920楼 得分:0
各位老大
帮帮忙
急啊
3q
发表于:2007-07-30 23:18:1921楼 得分:2
先用可行的方法让东西跑起来,然后再考虑性能、负载之类的。
很多方法都需反复比较才能发现孰优孰劣。
发表于:2007-07-30 23:44:5922楼 得分:5
以前有过类似系统.数据库(sql   server),程序c/s.
数据库建立扩张存储过程(里面是用socket发数据),数据库有一张表,用来记录登陆的用户的ip地址.   另外,在要刷新的表上建立触发器(主要是更新和插入的),表中有数据变化时,调用扩展存储过程,立即给客户端发socket消息,消息包中封装要刷新数据的主键.客户短收到消息后只刷新变化部分的记录(不要用敏感控件).

  如果并发和访问量较大,服务器也会死去(感觉效率也上不去)
发表于:2007-07-30 23:50:3523楼 得分:5
web上感觉用ajaxanywhere定时局部刷新比较好.
在网上找找ajaxanywhere的资料,这个应该很多.
发表于:2007-07-31 00:17:5424楼 得分:5
象这种东西,最典型的就是sina直播间了
它事通过定时刷新界面做到的。而不是服务器的工作。。。。
发表于:2007-07-31 08:50:5125楼 得分:2
如果是纯b/s好象难点     只能用页面刷新    
或者   写个listener   a对数据操作时候     bc刷新(不过好象难点)
ajax可以实现
发表于:2007-07-31 09:54:5326楼 得分:5
最方便是使用ajax。

看看dwr   2.0的范例,里面就有一个关于实时聊天的程序,把它的源代码拿来改改。
发表于:2007-08-02 00:23:1527楼 得分:5
看下dwr例子中的chat,用到了推技术。
发表于:2007-08-02 00:46:4728楼 得分:8
使用   dwr2   的server   push   技术
本人用它编写了类似qq的web实时消息系统
网上有丰富的例子
发表于:2007-08-02 00:53:4029楼 得分:0
告诉我你的email,   我给你发一个例子
发表于:2007-08-02 00:54:3930楼 得分:0
这个贴子我可能不会回来看,你给我的信箱来封信最好:jeef_yin@yahoo.ca
发表于:2007-08-02 09:01:5931楼 得分:2
晕我才看到
你就不回来看了?

哥们b/s一样做
也不用ajax
你搜索“任务调度”
有一个框架就是解决这个问题的
我也正在弄
发表于:2007-08-02 21:39:4232楼 得分:0
3q
顺着你们的思路
我再试试
发表于:2007-08-10 22:31:1833楼 得分:0
6.6


快速检索

最新资讯
热门点击