一个超难的问题.超人请进[jsp数据动态刷新]
要求是这样.
服务器端数据一但改变,所有连接到服务器的客户端的JSP页面数据就全部更新掉.
打个比方.
比如就像是查看股票行情的一个jsp页面,现在我连在上面,这时候服务器数据一但改变,则服务器就马上把所有连在这个服务器上面的客户的jsp页面数据全部刷新一遍.
要求:1.不能用jsp页面定时刷新.这样总闪不好
2.不能用ajax.我看了一下ajax实现动态刷新也是用的定时去连服务器.人数多的情况下,数据量又大,服务器也受不了.
所以只能从服务器端想办法.
我用了个方法,就是保存客户的request和respones信息,然后用foword跳转.不过总报错. 有没有人能解决这个问题? 我今天不睡觉了,在线等答案!请达人们速来救我.!!!!!!!!!!!!
[解决办法]
我晕哦,你以为是C/S啊,B/S是基于于会话式的。服务器更多的是的被动式,我想到的可能就是和那个网络聊天的运行模式一样吧,不过我不会。应该都是在客户端访问服务器的吧
[解决办法]
非用ajax不可,接个连接池的话应该不会太大问题了吧
[解决办法]
我想应该不一定要用Ajax啊,像那些网页式的聊天室,难道他们是用Ajax技术吗?
[解决办法]
那些应该也是ajax
或者用applet
[解决办法]
暂时只想到
<% response.setHeader( "refresh ", "1 "); %>
没一秒刷新一次
[解决办法]
要么你去作一个小插件装在客户装的。让服务器和这个小插件打交道,要不是不可能由服务器发启的,都是要客户端发起的。bs要不是cs
[解决办法]
纯BS的一定要用AJAX,但可以优化。
以前做过一个赌球行情的,和这个差不多,20秒刷一次,最新的行情变动还会闪。
1.不要每次都去读数据库,反正大家看的都是一样的东西,一有改动马上放到一个缓存里,只从缓存里调数据。
2.不要用xml,用纯文本,自已定一个规则,尽可能的节约流量。到IE再用js进行解析。
我就是所有数据全部用逗号和|号分开,引号和别的都不用。
3.如果服务器CPU强的话还可以只给用户改动过的数据,就是提交时有一项上次更新时间,只给用户更新过的数据,这个要遍历的,所以会有点慢,但因为在内存操作,还是比从数据库读要快得多几个数量级。
[解决办法]
b/s不是c/s,http是无状态的,你这样的需求恐怕不好办.
用Ajax,适当优化一下应该还好吧
[解决办法]
服务器推技术,实时性无论如何都不能和C/S比啊,楼上说了做插件,那么就是C/S的范畴了
ftiger(哈哈鱼)的方法可行,但是效率远远不能和C/S相比啊,如果你真得想做好,那么就用C/S做或装插件了
[解决办法]
采用聊天室模式,使用框架显示再要显示更新页面实时刷新,这样可能会好点。ftiger(哈哈鱼) ( )方法很好的
[解决办法]
要装插件的话,不如叫你的客户装个JRE
这样用WEB START就可以了,还有利于JAVA的普及^-^
[解决办法]
[解决办法]
我觉得楼主的这个问题用现有的jsp技术不大可能实现,至少不会是立即更新的。
可以让客户端,每过一段时间,自己发请求,但是这样会对服务器产生很大的压力。
[解决办法]
也曾,遇到过类似问题,关注一下.
[解决办法]
关注,我也想实现这样的功能!
[解决办法]
你的需求可以实现,但是需要结合良好的设计才能确保系统稳定
不知道你的数据主要通过什么方式来变化的
[解决办法]
用C/S不现实 可以在服务端多设计一个标记位,如果数据有改变的话就更改这个标记位,页面定时请求服务端判断这个标记位是否需要转向新的数据页面,这样可以省却不必要的刷新,数据传送量相对小一些,靠服务端来控制客户端动作有点困难吧
[解决办法]
cifco 你怎么解决的阿?
另外服务器推技术具体是怎么实现的?
[解决办法]
朋友,能给个思路嘛,我也想了解这方面的东西。
[解决办法]
交流
yuyangwxj@gmail.com
------解决方案--------------------
基于请求/响应的web应用程序。应遵守一个基本原则就是客户端发出请求,服务器才针对该请求进行响应,在没有客户请求的情况下,服务器不能主动发给客户端任何信息(你仔细想想就是发了浏览器端也收不到!)
针对你的问题,一个用户向服务器进行请求,其它用户没向服务器请求的情况下,这些其它用户始终不可能收到服务器的任何信息(因为他们没发请求)。这也是这类问题通常通过客户端不断刷新从而不断产生对服务器的请求,来实现信息的接收的做法的一个原因。
记住没有“请求”就没有“响应”!!!
理论说了很多,不信动手试试。有兴趣的继续讨论,这里其实还有一个逻辑问题呢。先不说了:)
[解决办法]
我昏... "然后通过response.write 向客户端写入数据即可 "....
[解决办法]
楼主想搞清楚http://www.lightstreamer.com/原理再说话,否则很容易误导初学者,还以为B/S还真的能实现服务器端实时推进技术呢。
Based on the AJAX-Comet。
[解决办法]
搞这么多年第一次听说,用了一点js就是别人说的ajax吧。真要实现的话flash可以做到。
[解决办法]
让这样的帖子顶起来,不顶有点可惜,我也有同样的问题,我们公司的首页面要调44个库表,那叫一个慢。。。。。。20秒才会有反映。。。。。。期待高人的出现
[解决办法]
你说的这种持续连接的方法,当年cgi的时候聊天室就大量使用。
表现为并发数量很小。
既然你的人数很多,肯定不合适。
还是ajax的方案比较成熟,局部刷新。
服务器端设置更新标志,每次都只是访问标志
只有服务器端数据更新了,才真的去取数据。
如果非要 "实时 "数据的话,还是不要走http协议了。
[解决办法]
用ajax或者applet技术吧
[解决办法]
回复人:cifco() ( 一级(初级)) 信誉:100 2007-05-28 22:35:15 得分:0
?
ajax定时刷新实时性和效率自然和这个是没发比的.
还有并发性连接的问题,也不是问题了.现在很多服务器已经开始支持.具体你可以查一下资料.
-----------------------------
服务器软件支持,不代表硬件支持。
这种与服务器的长时间连接,本来就是对http的变态应用,只是应用于特定的场合,
ajax的实时性差点,这个是必然的,
效率,你怎么能说ajax的效率和这个没法比???
[解决办法]
进来看看 超人 长什么样
[解决办法]
为什么不用ajax??奇怪了,那就只有用长连接flush了。或者用隐藏frame+JS,(这还是AJAX了)
[解决办法]
b/s不是c/s,http是无状态的,你这样的需求恐怕不好办.
用Ajax,适当优化一下应该还好吧