Ajax 如何在不刷新页面的情况下将新HTML数据从服务器推送到浏览器

Ajax 如何在不刷新页面的情况下将新HTML数据从服务器推送到浏览器,ajax,html,asynchronous,websocket,Ajax,Html,Asynchronous,Websocket,我见过很多网站(比如facebook或stack overflow),它们会在生成新数据时更新某些功能(比如帖子上的新答案) 假设有一篇新文章被添加到博客中,此时有人正在博客中查看它,其想法是自动将新文章添加到博客中,而无需刷新或让用户执行任何操作 我曾想过每5秒左右执行一次AJAX调用,但这会向服务器发出太多请求,而且我看到我提到的网站(更新内容)不会发出任何新请求 我真的不知道如何做到这一点。这在PHP和AJAX中是可能的吗?我也听说过WebSocket。有什么想法吗? 谢谢好问题!有一些解

我见过很多网站(比如facebook或stack overflow),它们会在生成新数据时更新某些功能(比如帖子上的新答案)

假设有一篇新文章被添加到博客中,此时有人正在博客中查看它,其想法是自动将新文章添加到博客中,而无需刷新或让用户执行任何操作

我曾想过每5秒左右执行一次AJAX调用,但这会向服务器发出太多请求,而且我看到我提到的网站(更新内容)不会发出任何新请求

我真的不知道如何做到这一点。这在PHP和AJAX中是可能的吗?我也听说过WebSocket。有什么想法吗?
谢谢

好问题!有一些解决方案

有一个相对较新的解决方案称为websockets。它在HTML5标准中,并且 在其他语言上也有很多用于它的库

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

列举:LBWebSosits(C++)、pyWebSoCube(Python)和JETY(JavaScript)

对于php:


有关更多信息,请访问此链接:

可以帮助您完成此操作的框架的一个示例是SignalR

这是特定于asp.net的,但您可以使用。但这不是一个很好的解决方案

您可以使用Comet服务器来帮助进行长时间AJAX轮询。看看这本书。它是Comet服务器和Javascript框架的组合,使AJAX-PUSH或实时流媒体成为可能

干杯!:)

如果您在PHP和开源世界中,可以考虑No.Js、SoCKET.IO或NowJs


我在ASP.Net wonderworld,我喜欢Signal。

哇,有新的东西要看,你能给我更多的提示吗?这是我第一次听说它。谢谢,有PHP解决方案吗?ThanksI在我上面的回答中添加了一个php库的链接,为什么HTML5 SSE不是一个好主意?浏览器不支持吗?感谢可能的副本