我有一个关于ajax的非常简单的问题。 如果我想刷新我的网站的某个特定区域,我会使用ajax是最好的方法。
但是,无论如何还有javascript定期检查服务器上的更改,服务器会在给定事件发生时发送数据吗?
我想要的是客户端不需要定期发送请求,而是服务器只会将信息发送给客户端,而客户端又会有某种事件监听器。
提前致谢
答案 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是要走的路,但尚未支持所有浏览器。
我用它们用红宝石和铬,非常容易。