【问题标题】:How to Use Long Polling or Ajax Push in your Website如何在您的网站中使用长轮询或 Ajax 推送
【发布时间】:2011-12-16 23:50:16
【问题描述】:

我想知道如何使用 ajax push 。我从各种网络文章中了解到,可以通过使用 COMET、APE (AJAX PUSH ENGINE) 等少数程序来获得 Ajax 推送。但是我想知道是否有更简单的使用方法以及使用什么语言实现ajax推送。因为在我看过的文章中。他们正在使用java。我没有学过 :( 所以我想知道是否有类似的东西:你的服务器中的一个 javascript 设置一个特定项目的间隔,然后如果发现任何更改,然后使用 php 将其回显出来。?请帮帮我为此。已经一个星期了,现在我试图实现这一目标。我尝试通过使用间隔来使用普通的 ajax 和 php,但无法获得结果。谢谢。P.S:请通过示例向我展示一个简单的使用方法什么的。

【问题讨论】:

  • 已经有很多关于这个主题的讨论:stackoverflow.com/search?q=ajax+push+poll检查它!
  • 我认为您从错误的角度看待它。 Concertrate 关于“我如何让客户端浏览器接收定期更新”。客户端可以定期要求更新,服务器提供新信息(如果有的话)。大多数人使用 JSON,在客户端请求中添加时间戳,然后回复“您不需要更新”或“是的,您有更新,这是新信息”
  • @abe - 任何使用 JSON 的好例子?
  • 你熟悉 jQuery 和 javascript 吗?如果是这样,它只是一个由 setTimeout 调用的 ajax 请求。我现在没有时间,但我可以以 jsfiddle 为例进行设置
  • 是的 plzz 会很高兴的。谢谢

标签: php jquery ajax comet ajax-polling


【解决方案1】:

如果您想使用 PHP 作为您的后端技术,那么这将是一场艰苦的斗争。请在concurrency - How to implement event listening in PHP 上阅读此问题以获取更多信息。

在我看来,对于 PHP 开发人员来说,最简单的解决方案是使用像 Pusher 这样的托管实时服务——我的工作对象。这意味着您无需担心实时 Web 基础架构的安装或维护,最重要的是您无需担心服务器处理持久并发连接。您使用 Pusher JavaScript 库从 Web 浏览器连接到 Pusher,维护持久连接并接收推送给它的任何更新,并使用 Pusher REST API 通过 Pusher 从您的 PHP 应用程序发布数据到连接的客户端。

getting started with Pusher guide on Nettuts+ 非常受欢迎,对于任何使用 PHP 的人来说都是一个很好的起点。

如果您真的想在 PHP 上托管您自己的实时基础架构(别说我没有警告过您),那么您可以查看 How to implement PHP with CometPHP WebSockets(在 github 上还有一个项目,最近的活动称为php-websocket-server)。

【讨论】:

  • 哦,好的。我能知道你在“Pusher”上使用什么语言吗?我在谈论服务器端的语言。
  • Node、Java、Groovy/Grails、Clojure、Python、VB.NET、C#、PHP、Ruby、Perl、ColdFusion - 基本上任何可以进行 HTTP 调用的语言到 Pusher RESTful API。 Pusher 服务器库的链接在这里:pusher.com/docs/rest_libraries
  • 哦,好酷!那么我该如何使用你的“推杆”,我还需要学习什么才能使用你的服务?
  • 我在答案中链接到的教程和quickstart guide 是一个很好的起点。 main docs page 也是一个很好的起点。如果您对 Pusher 服务还有其他问题,建议您通过 Pusher support forum 向他们提问。
【解决方案2】:

前段时间我用了一个非常简单的基于flash的方法

我在我的页面上添加了一个小的 1px*1px 透明闪存,它打开了一个到我的 AJAX 发送请求的服务器的套接字。服务器接收到 AJAX 请求并在 flash 套接字上响应

flash 只打开一个调用 onreceive 事件处理程序的 javascript: url,因此您不会打开新页面而是在当前页面上运行 javascript

【讨论】:

  • flash 是现在很少使用的东西。所以我宁愿使用 javascript 函数。
  • 仍然是您可以用来解决作者问题的一种方法,因为闪存在未来 2 年内不会消失。还有,Abe Petrillo,没人说用 flash 请求,我用 flash 响应
  • @TorbenK。 - 你能举一个例子来说明如何实现这一点,因为你的例子似乎是我工作的一个很好的解决方法:)
  • 我尝试搜索我的旧代码,但我只找到了打开套接字的 AS 文件。这只是一个连接到要发送的服务器的 flash.net.XMLSocket,让 flash 监听 DataEvent.DATA 和 Event.CONNECT。您可以使用 Flash 发送和响应,但发送也可以只使用 AJAX。它有效,但我从未详细研究过,我想您的项目需要更多的东西,如身份验证和会话管理
猜你喜欢
  • 1970-01-01
  • 2014-08-10
  • 2010-11-09
  • 1970-01-01
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 2011-04-20
相关资源
最近更新 更多