【问题标题】:Is Http Streaming Comet possible in Safari?Safari 中是否可以使用 Http Streaming Comet?
【发布时间】:2010-09-15 05:13:44
【问题描述】:

通过 HTTP Streaming Comet,我的意思是“永久 iframe”/“永久 xhr”变体,在从服务器推送数据后不会关闭连接,而不是标准轮询和长轮询,后者关闭并重新发送每个服务器推送事件的新请求。

我查看了 dojo.io.cometd 包,似乎它们只有轮询实现。我还找到了this example,但即使经过一番修改,它似乎也无法在 webkit 中工作(我让它在其他任何地方都可以工作)。 This announcement from the safari blog 似乎暗示 xhr 可以,但我找不到任何代码或文档,也无法让它工作。

有谁知道在 Webkit 浏览器(Safari 和 Chrome)中实现 HTTP 流彗星的技术、脚本、库或演示?

更新

经过一番修改后,我发现需要做两件事才能通过 XHR 在 Safari 中使用 http 流:

  • 响应需要有一个 Content-Type:multipart/x-mixed-replace
  • 在浏览器开始一致地显示更新之前,响应需要发送一些“噪音”字符。我假设这与填充一些内部缓冲区有关。

更新 2

我终于使用 iframe 技术让它在所有浏览器中工作。该解决方案需要注意的是,只有基于 WebKit 的浏览器才能接收 multipart/x-mixed-replace 标头。

【问题讨论】:

  • 没有“multipart/x-mixed-replace”,您仍然可以在 Safari 中获得 HTTP 流式处理工作。你只需要自己做解析。
  • @Leo:可以分享一下所有浏览器都启用Http Streaming的代码sn-ps吗?这应该对我和社区有用。谢谢。

标签: javascript safari comet


【解决方案1】:

根据维基百科,HTTP Streaming comet 应该可以在每个浏览器中使用。 “不带框架的页面布局”,Ajax:权威指南。 O'Reilly Media, pp. 320. ISBN 0596528388 是引用此信息的参考资料,所以这本书可能对如何做到这一点有建议。

http://meteorserver.org/ 也有一个我刚刚确认在 Chrome 中工作的演示,它是一个客户端库 + 一个将数据推送到客户端的服务器。

【讨论】:

    【解决方案2】:

    绝对有可能:GMail 做到了。如果您观看最新 Webkit 中开发人员工具的参考资料部分,您可以观看它的实际操作。他们有一个称为“绑定”的请求,该请求或多或少无限期地保持打开状态。我的理解是,当新邮件到达时,它会遇到这种联系。

    【讨论】:

      【解决方案3】:

      是的。

      您需要在响应的前面添加include a large amount(至少 256 个字节)的垃圾,以使 Safari 正常运行。

      【讨论】:

        【解决方案4】:

        虽然这是一篇旧文章,但我确实做了一些搜索,发现以下文章确实很有帮助 http://www.shanison.com/2010/05/10/stop-the-browser-%E2%80%9Cthrobber-of-doom%E2%80%9D-while-loading-comet-forever-iframe/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-06
          • 1970-01-01
          • 2010-11-24
          • 2011-02-10
          • 1970-01-01
          • 2014-01-13
          • 2010-10-26
          • 2017-02-22
          相关资源
          最近更新 更多