2013-04-16 76 views
4

我见过很多网站(例如facebook或堆栈溢出),它们会在生成新数据时更新某些功能(例如, )。如何在不刷新页面的情况下将新的HTML数据从服务器推送到浏览器

假设有一篇新文章被添加到博客中,并且当时有人在博客中查看它,这个想法是自动将新博文添加到博客而不刷新或让用户执行任何操作行动。

我曾经想过每5秒左右执行一次AJAX调用,但是这会对服务器提出太多请求,而且我看到我提到的网站(哪些续订内容)没有提出任何新请求。

我真的不知道如何做到这一点。这可能与PHP和AJAX?我也听说过websocket。有任何想法吗? 谢谢

+0

可能重复[有什么方法可以将数据从Web服务器推送到浏览器?](https://stackoverflow.com/questions/19995/is-there-some-way-to-push-data-from-网络服务器到浏览器) – Suma

回答

5

伟大的问题!有几个解决方案。

这个调用websockets有一个相对较新的解决方案。这是在HTML5标准和 也有很多其他语言的库。

其中之一是sockets.io(javascript) - 它使您能够与服务器保持一致的低延迟连接,以便在生成时接收信息。还有很多用于服务器端的php,c和python插件。

仅举几例:libwebsockets(C++),pywebsockets(蟒蛇),以及码头(JavaScript)的

而对于PHP:http://socketo.me/

访问此链接的详细信息:http://www.html5rocks.com/en/tutorials/websockets/basics/

+0

哇,有点新的调查,你可以给我更多的提示,这是我第一次听到它。谢谢 – multimediaxp

1

一一个框架的例子可以帮助你做到这一点SignalR http://signalr.net/

这是asp.net特定的虽然

+0

有没有PHP解决方案?谢谢 – multimediaxp

+0

我在上面的回答中添加了一个php库的链接 – tay10r

+0

http://stackoverflow.com/questions/5753674/php-best-way-to-push-data-from-server-to-clients – TGH

2

您可以使用HTML5 SSE。但这不是一个很好的解决方案。

您可以使用Comet服务器来帮助进行Long AJAX轮询。检查出Ajax Push Engine (APE)。它是Comet Server和Javascript框架的组合,可以实现AJAX-PUSH或实时流式传输。

干杯! :)

+0

为什么选择HTML5 SSE不是一个好主意吗?不受资源管理器支持?谢谢 – multimediaxp

0

好,

如果你是在PHP和开源的世界里,你可以考虑的Node.js,Socket.IO或NowJs

我在ASP.Net的WonderWorld,我爱SignalR。

相关问题