资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
利用 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 的所有组件都已存在了许多年。AdaptivePath 的用户体验战略部门主 管兼创办合伙人 JesseJamesGarrett 今年 2 月发表在 AdaptivePath 网站上的一 篇文章中杜撰了这个术语。 异步这个词是指 AJAX 应用软件与主机服务器进行联系的方式。 如果使用旧模式,每当用户执行某种操作、向服务器请求获得新数据,Web 浏览器就会更新当前 窗口。 如果使用 AJAX 的异步模式,浏览器就不必等用户请求操作,也不必更新整个窗口就可以显示新获取的数据。只要来回传送采用 XML 格式的数据,在浏览器里面运行的 JavaScript 代码就可以与服务器进行联系。 JavaScript 代码还可以把样 式表加到检索到的数据上,然后在现有网页的某个部分加以显示。 在面向消费者的诸多应用当中,Google 的 Gmail 和 GoogleMaps 就是最常见的 例子。在 Gmail 当中,AJAX 负责如何开启线程会话,以显示不同邮件的文本内 容。而在 Maps 当中,AJAX 允许用户以一种似乎无缝的方式拖拉及滚动地图。 还有雅虎的 Flickr 像片共享应用和亚马逊网站的 A9 搜索引擎。另外,雅虎新的Web 邮件服务可能很快就会吸引 AJAX 支持者的莫大关注,这项服务基于雅虎 收购 Oddpost 后得到的技术。 这些 UI 都充分地使用了后台通道,也被一些开发者称为“Web2.0”,并导致了大 家对 Ajax 应用兴趣的猛涨。 然而,AJAX 应用软件厂商越来越把目光瞄准了企业。譬如说,Scalix 的 WebAccess 电子邮件应用软件其实比微软 Outlook 自己的 Web 邮件界面更像 Outlook。 不过 AJAX 应用软件的适用领域具有一定的局限性。 因为它们利用了一些最新的 Web 技术, 所以只能在某些 Web 浏览器里面运行不过 AJAX 适用的浏览器 正越来越多。 Ajax Ajax,异步 JavaScript 与 XML,是使用客户端脚本与 Web 服务器交换数据的 Web 应用开发方法。这样,Web 页面不用打断交互流程进行重新加裁,就可以 动态地更新。使用 Ajax,你可以创建接近本地桌面应用的,直接的、高可用的、 更丰富的、更动态的 Web 用户接口界面。 Ajax 处理过程 一个 Ajax 交互从一个称为 XMLHttpRequest 的 JavaScript 对象开始。如同名字 所暗示的,它允许一个客户端脚本来执行 HTTP 请求,并且将会解析一个 XML格式的服务器响应。Ajax 处理过程中的第一步是创建一个 XMLHttpRequest 实 例。使用 HTTP 方法(GET 或 POST)来处理请求,并将目标 URL 设置到 XMLHttpRequest 对象上。 现在,记住 Ajax 如何首先处于异步处理状态?当你发送 HTTP 请求,你不希望浏览器挂起并等待服务器的响应,取而代之的是,你希望通过页面继续响应用户 的界面交互,并在服务器响应真正到达后处理它们。要完成它,你可以向 XMLHttpRequest 注册一个回调函数,并异步地派发 XMLHttpRequest 请求。控制权马上就被返回到浏览器,当服务器响应到达时,回调函数将会被调用。 在 JavaWeb 服务器上,到达的请求与任何其它 HttpServletRequest 一样。在解 析请求参数后,servlet 执行必需的应用逻辑,将响应序列化到 XML 中,并将它 写回 HttpServletResponse。 一个 Ajax 交互从一个称为 XMLHttpRequest 的 JavaScript 对象开始。如同名字 所暗示的,它允许一个客户端脚本来执行 HTTP 请求,并且将会解析一个 XML 格式的服务器响应。Ajax 处理过程中的第一步是创建一个 XMLHttpRequest 实 例。使用 HTTP 方法(GET 或 POST)来处理请求,并将目标 URL 设置到XMLHttpRequest 对象上。 现在,记住 Ajax 如何首先处于异步处理状态?当你发送 HTTP 请求,你不希望 浏览器挂起并等待服务器的响应,取而代之的是,你希望通过页面继续响应用户 的界面交互,并在服务器响应真正到达后处理它们。要完成它,你可以向XMLHttpRequest 注册一个回调函数,并异步地派发 XMLHttpRequest 请求。控 制权马上就被返回到浏览器,当服务器响应到达时,回调函数将会被调用。 在 JavaWeb 服务器上,到达的请求与任何其它 HttpServletRequest 一样。在解 析请求参数后,servlet 执行必需的应用逻辑,将响应序列化到 XML 中,并将它写回 HttpServletResponse。 一个 Ajax 交互从一个称为 XMLHttpRequest 的 JavaScript 对象开始。如同名字 所暗示的,它允许一个客户端脚本来执行 HTTP 请求,并且将会解析一个 XML 格式的服务器响应。Ajax 处理过程中的第一步是创建一个 XMLHttpRequest 实例。使用 HTTP 方法(GET 或 POST)来处理请求,并将目标 URL 设置到 XMLHttpRequest 对象上。 现在,记住 Ajax 如何首先处于异步处理状态?当你发送 HTTP 请求,你不希望 浏览器挂起并等待服务器的响应,取而代之的是,你希望通过页面继续响应用户的界面交互,并在服务器响应真正到达后处理它们。要完成它,你可以向 XMLHttpRequest 注册一个回调函数,并异步地派发 XMLHttpRequest 请求。控 制权马上就被返回到浏览器,当服务器响应到达时,回调函数将会被调用。 在 JavaWeb 服务器上,到达的请求与任何其它 HttpServletRequest 一样。在解析请求参数后,servlet 执行必需的应用逻辑,将响应序列化到 XML 中,并将它 写回 HttpServletResponse。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号