2012-02-17 153 views
0

我有需要每分钟自动更新一次的网格。我想异步更新网格,以便网页不会向服务器发送任何请求。只有服务器会知道何时发送新的让我们说JSon数据到客户端。这可能吗?我可以通过ping服务器发送数据给客户端吗?带出HTTP请求的HTTP响应

谢谢。

回答

0

不需要。您必须使用某种开放套接字,无论如何这是一种非常低级的ping形式。标准是简单地有一个频繁但很短的JSON请求来检查新的数据。

编辑 - 有WebSocket,但似乎在服务器端的实施更先进&你会削弱你的受众范围。只需频繁,简短的JSON请求。

0

不,您必须发送HTTP请求才能获得响应。请求和响应之间的延迟可以,只要你想要的,但是,(所以请不要积极地轮询更新):

http://en.wikipedia.org/wiki/Push_technology#Long_polling

您只需提出请求,等待它完成(当有事情发生时),立即启动另一个请求,然后处理响应。

这样,服务器总是有一个请求准备好,它可以响应以便“推送”到浏览器(或者很快会做出)。

+0

>最大的障碍是HTTP 1.1规范,该规范规定浏览器与Web服务器的连接数不能超过两个。因此,为实时事件保持一个连接打开会对浏览器的可用性产生负面影响:在等待先前请求的结果(例如一系列图像)的同时,浏览器可能被阻止发送新的请求。 – Tim 2012-02-17 16:09:36

+0

@Tim在页面加载完成后开始第一轮投票。这种方法被Facebook等成功使用。 – 2012-02-17 16:11:03

+0

另外,我刚刚在Firefox中检查了'network.http.max-connections-per-server'。它默认为_15_。 – 2012-02-17 16:13:56