【问题标题】:Reverse Ajax without Comet?没有 Comet 的反向 Ajax?
【发布时间】:2009-05-03 00:09:10
【问题描述】:

是否可以在没有 Comet 的情况下让 Web 服务器向 Web 浏览器发送消息?

像 Facebook 和谷歌这样的主要网络公司都为此目的使用 Comet,如果为主要浏览器启用 tcp 连接,这似乎是一个等待消失的丑陋黑客。

【问题讨论】:

    标签: ajax tcp comet


    【解决方案1】:

    是否可以让web服务器 向网络浏览器发送消息 没有彗星?

    是的,可以通过 Silverlight、Flex、Flash 和 Java 小程序实现。

    像 Facebook 这样的各大网络公司 谷歌为此目的使用 Comet 它看起来就像一个丑陋的黑客 如果 tcp 等待消失 为主要启用了连接 浏览器。

    HTML 5 Web Sockets 等 TCP 连接不能解决问题。您会看到很多人在工作场所、大学或学校使用 Google 和 Facebook,而防火墙通常会阻止非标准端口和非 HTTP 流量。因此,将消息发送到 Web 浏览器的解决方案必须通过 HTTP 工作,并且通常看起来像 HTTP。这就是为什么谷歌和 Facebook 使用 Comet 并将继续这样做,否则他们将无法接触到大部分用户。事实上,一些防火墙和反向代理会关闭长时间运行的 HTTP 连接,因此 Ajax 轮询连接通常用作后备。如果您正在寻找能够通过反向 Ajax 向浏览器发送消息的服务器,我可以建议类似 StreamHub Reverse Ajax

    【解决方案2】:

    如果有其他方法,您认为 Facebook 和 Google 为什么会这样做?

    好吧,好吧,还有其他方法。您可以在页面中嵌入 Java 小程序。如果 Java 小程序已签名,并且用户授予它权限,它可以为服务器打开一个长时间运行的连接以向其发送事件。但这会让你得到更脆弱的东西,需要更多的用户交互,启动速度更慢,并且可以在比 Comet 更少的平台上工作。

    已经讨论过将 server-sent eventsweb sockets 添加到 HTML5,但这是非常初步的,可能不会成为标准。

    【讨论】:

      【解决方案3】:

      由于“彗星”是任何使用现有 http 协议来模拟数据推送的人为术语,我担心你无能为力。

      唯一的解决方案是对当前协议的“增强”或一些广泛使用的可能基于插件的解决方案......您可以使用 java 来实现。但这会引发其他问题,因为基本上您需要在该浏览器上提供可用的传入连接。

      【讨论】:

        【解决方案4】:

        Comet 可以作为一个长轮询 ajax 调用来实现,所以它是一个语义问题。 Here, for example, is a jquery plugin 在 jQuery 的 ajax 调用上使用 Bayeux 协议实现 Comet。

        【讨论】:

          猜你喜欢
          • 2011-02-05
          • 1970-01-01
          • 2013-05-23
          • 2011-02-27
          • 2011-01-12
          • 1970-01-01
          • 2012-07-07
          • 1970-01-01
          • 2023-03-06
          相关资源
          最近更新 更多