Ajax简单的问题

时间:2010-12-15 13:45:34

标签: javascript ajax streaming push

我有一个关于ajax的非常简单的问题。 如果我想刷新我的网站的某个特定区域,我会使用ajax是最好的方法。

但是,无论如何还有javascript定期检查服务器上的更改,服务器会在给定事件发生时发送数据吗?

我想要的是客户端不需要定期发送请求,而是服务器只会将信息发送给客户端,而客户端又会有某种事件监听器。

提前致谢

6 个答案:

答案 0 :(得分:1)

这是无法做到的,因为http协议通过发送请求并从服务器接收响应来工作,因此服务器无法在没有收到请求的情况下进行响应。

答案 1 :(得分:1)

是的,可以这样做。它被称为“推送”或“推送流”。

以下是一个提供此功能的网站:InstantPush。并在他们的主页上简短引用:

  

“InstantPush用于制作网页   和手机上线。他们会的   立即实时更新   服务器端发生更改。   标准的网络通信使   更新通过防火墙和代理。   没有客户端的任何模块   侧!

     

InstantPush自2001年开始使用,   在“Ajax被发明”之前。它是   可能是第一次Ajax推送   框架。

     

InstantPush正在引领市场   北欧。“

这是另一家提供此技术的公司:LightStreamer。并从他们的主页引用:

  

“Lightstreamer是一个可扩展且可靠的服务器,用于将实时数据推送到富Internet应用程序

     

基于Comet和Real-Time Web   范例,它传输实时数据   到任何Web浏览器和客户端   应用。 HTML,HTML5,AJAX,Flex,   Silverlight,Java,.NET,iOS,Android,   和BlackBerry应用程序,可以   轻松接收来自的实时数据   Lightstreamer Server。

     

Lightstreamer已被用于许多领域   任务关键型生产系统,   可扩展性,低网络影响,   带宽管理,自适应   流媒体等先进的   功能,已被证明是基本的。“

答案 2 :(得分:0)

使用传统HTTP无法做到这一点。但是,您可以使用long polling或其中一个兄弟来模拟推送行为。

答案 3 :(得分:0)

这确实是一个困难的问题,服务器在没有请求的情况下向客户端广播/推送数据。 HTTP是无状态的,即使浏览器是注册客户端,它仍然需要通过代码或通过元刷新等标签来请求。新的但仍然不那么稳定的选择是Comet或websockets。

答案是Comet而不是websockets。对的,这是可能的。 另一种方法是使用Browser插件。

这是除了Push Technology

的维基页面之外的其他内容
* Apple Push Notification Service
* BOSH
* Comet
* Client–server model
* File transfer
* Pull technology
* Push Access Protocol
* Push e-mail
* Reverse Ajax
* Streaming media
* WebSockets

答案 4 :(得分:0)

不能做到这一点。服务器的工作是提供请求的结果,该结果必须以请求开始。

答案 5 :(得分:0)

我认为websockets是要走的路,但尚未支持所有浏览器。

我用它们用红宝石和铬,非常容易。