- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用Ajax 实现长连接(模拟推送,半长连接)
ajax 聊天服务器cometgoogle 数据库
很多程序都可以通过socket 来实现长连接,实现消息的即时推送。但由于http 请求一
般都是短连接,一次请求结束,就会断开与服务器的连接,服务器不能主动推送数据到客户
端,而只能由客户端发起请求,但有些时候,需要在web 上实现即时的消息传输,比如即
时聊天、股票动态信息等。
在Ajax 技术被发掘以前,在网页上实现无刷新的即时聊天,似乎是很困难的事情,但由
于Ajax 技术的兴起,人们可以进一步来挖掘它的潜力了,象gmail、google gtalk 的网页版,
都是Ajax 长连接的重要应用,目前很多网站可能都已经在使用长连接技术了,比如SNS 网
站的即时聊天。
1.Ajax 短连接方式实现网页聊天
自己画了一个模型图:
常规的短连接模式下,都是通过不间断刷新请求实现的,比如每间隔3 秒发送一次Ajax
请求,3 秒更新一下数据,然后就这样不间断刷新下去,直到用户关闭网页。这样所带来的
弊端就是,如果用户很长时间都没有操作,每次刷新都不会返回新数据,这样就造成了资源
的浪费,很多请求都是没必要的;另外一个问题,就是用户的输入,跟数据的请求不是同步
的,会造成一定的信息延迟。
2.Ajax 长连接方式实现网页聊天
模型图:
Ajax 长连接模式,它的刷新是根据数据来执行的,如果有新数据返回,接收并解析显示
数据,然后发起新的Ajax 请求,如果一段时间内,用户没有操作,则连接处于睡眠状态,
一直等待有用户输入或者请求超时,然后发起下个Ajax 请求。这样做的好处是,每个消息
都会即时推送到客户端,延迟极少;另外每次请求都是有意义的,与短连接对比,效率要高
很多。但对于一个用户量很多,并且操作非常频繁的网站,长连接模式也会出现过于频繁的
刷新问题。目前IE 对于HTTP 连接数是有限制的,每个网页只能同时进行两个长连接,第
三个长连接会被阻塞。
利用php 在后台sleep,自己做了个模拟的程序,查看效果
看了一下别人写的Ajax 长连接聊天的案例,以php 为例,基本上是在后台进行不间断
的检测,如果有新数据就推送,如果没有新数据,就一直阻塞,直到30 秒超时,然后客户
端重新发起下一个请求。后台判断里重要的一行代码:usleep(10000); 就是暂停 10 毫秒,
缓解一下CPU 压力,个人感觉如果暂停100 毫秒,时间延迟也是很难感觉到的。这种方法
基本就是把前端的循环,搬到了后台,中间减少了网络传输的环节,如果是一个Ajax 的即
时聊天系统,要保存用户的聊天记录,那就需要跟数据库相结合,每秒10 次以上的数据查
询,这个与短连接比,必定加大了数据库的压力,具体怎么优化,这个应该是交给服务器端
人员来处理了。
如果想要了解更多的内容请Google 一下comet,或者看看这里(一个很不错的框架,Ajax
Push Engine),这个网站有很多demo,效果很帅。
1.什么是Ajax?
Ajax 的全称是:AsynchronousJavaScript+XML
2.Ajax 的定义:
Ajax 不是一个技术,它实际上是几种技术,每种技术都有其独特这处,合在一
起就成了一个功能强大的新技术。
3.Ajax 包括:
XHTML 和CSS
使用文档对象模型(DocumentObjectModel)作动态显示和交互
使用XML 和XSLT 做数据交互和操作
使用XMLHttpRequest 进行异步数据接收
使用JavaScript 将它们绑定在一起
Web 开发领域的最新时髦术语其实质是“旧貌换新颜”。
Ajax (AsynchronousJavaScriptandXML )是结合了Java 技术、XML 以及
JavaScript 等编程技术,可以让开发人员构建基于Java 技术的Web 应用,并打
破了使用页面重载的惯例。
Ajax 是使用客户端脚本与Web 服务器交换数据的Web 应用开发方法。这样,
Web 页面不用打断交互流程进行重新加裁,就可以动态地更新。使用Ajax ,用
户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的Web 用户界
面。
异步JavaScript 和XML (AJAX )不是什么新技术,而是指这样一种方法:使用
几种现有技术——包括级联样式表 (CSS)、JavaScript、XHTML、XML 和可
扩展样式语言转换(XSLT ),开发外观及操作类似桌面软件的Web 应用软件。
实现Ajax 的所有组件都已存在了许多年。
文档评论(0)