问题描述
请教各位,现在后台程序会实时接收到一些数据,现在想把这些接收到的数据在前台页面实时显示,请问有什么好的解决方法,如果有的话,麻烦说下大概的流程,非常感谢!
解决方案
可以使用Ajax长连接的技术实现。Ajax长连接模式,它的刷新是根据数据来执行的,如果有新数据返回,接收并解析显示数据,然后发起新的Ajax请求,如果一段时间内,用户没有操作,则连接处于睡眠状态,一直等待有用户输入或者请求超时,然后发起下个Ajax请求。这样做的好处是,每个消息都会即时推送到客户端,延迟极少;另外每次请求都是有意义的,与短连接对比,效率要高很多。但对于一个用户量很多,并且操作非常频繁的网站,长连接模式也会出现过于频繁的刷新问题。目前IE对于HTTP连接数是有限制的,每个网页只能同时进行两个长连接,第三个长连接会被阻塞。具体可参考以下帖子内容:http://www.itlearner.com/article/4844
解决方案二:
看这个问题:传送门:http://www.iteye.com/problems/91410
解决方案三:
node.js + websocket-server 实现后台推送
解决方案四:
就我本人接触的项目,一般情况采用的方式:1、ajax方式,该方式实现方法,在页面通过定时刷新的js调用后台的方法,从而在后台拼装数据,在success中处理,在页面进行展示。但是该方式对浏览器的资源消耗比较大。假如用户长期停留在该页面的话,需要尽量控制浏览器所占资源,不然该页面迟早崩溃;2、Flex方式,该方式采用后台推技术。该技术的定时器主要通过flex内部通道实现。flex主动请求数据,之后直接在页面显示。该方式主要依赖flashPlayer的支持。所以,具体选择哪一种就看你的业务需要了。
解决方案五:
可以使用推送技术,也就是长连接的方式,这样可以确保数据的实时性,后台一旦有数据,前台立马显示。
解决方案六:
能想到的就是,页面定时往后台发送Ajax请求,拿到最新的数据后,把数据实时展现出来.不过这样很耗资源,人一多就悲剧了.