日期:2014-05-16  浏览次数:20626 次

AJAX疑问:目前的技术能否实现这样的功能? - Web 开发 / Ajax
想做一个在线聊天的程序,使用了AJAX+PHP,让显示页面定时请求数据,这样就实现了信息的自动更新。
这样的话占资源太大,老是不停地请求。

能不能实现这样的效果 :如果别人发了言(有了新数据),自动通知显示界面(也就是说有新数据才请求)??




多谢指教!

------解决方案--------------------
这个问题可说是经典的C/S问题了, 古往今来, 不知多少人都问过这个问题.
在AJAX之前, 通常采用IFRAME+Timer的方法来实现, 就是设定一个时间间隔, 不断地通过iframe去联系服务器, 检查是否需要更新前台数据, 通常iframe是隐藏的, 这样也就是所谓的"无刷新"(其实是有刷新的, 只不过不在用户面前显示)

同理, 可用Timer+AJAX 去定时询问服务器, 如果确认有数据更新, 则从服务器端取来, 然后发布到前台, 这个是真的无刷新.

还有一种方式, 很古老了, 现在应该没有什么人用了, 是在遥远的CGI年代的一种技巧, 浏览器与服务器之间打开并保持一条持续通道, 然后, 浏览器向服务器发出一条HTTP指令, 如果服务器支持该指令, 则可实现双方的持续通讯, 如同接通电话之后, 双方可以一直通话, 直到其中一方挂机.

------解决方案--------------------
可以考虑使用flash的socket功能,在你服务设置一个socket服务器,flash链接到你服务器就可以了。

socket如何编程就看你自己的能力了。


有人说使用服务器推,一个死循环,循环里面执行一定操作输出js后线程sleep几秒,这样保持一直打开连接,没试过,不知道效果如何。

从来都是客户端拉的多~~
------解决方案--------------------
能,记得在某本书上介绍过一种方法可以用ajax做服务端推.但是具体怎么实施忘记了(挺难弄的,所以看过就忘了)