【问题标题】:How's Comet implemented?Comet 是如何实现的?
【发布时间】:2010-01-20 01:25:08
【问题描述】:

我在想,如果请求的连接还没有完成,客户端如何得到响应?

原理是什么?

事实上,我已经阅读了很多关于这个主题的帖子:

How do I implement basic "Long Polling"?

How does the live, real-time typing work in Google Wave?

但没有一个能解决我的疑惑

【问题讨论】:

标签: comet


【解决方案1】:

答案取决于所使用的技术。

HTTP 流,使用“隐藏的 Iframe”技术,可以做到这一点。该技术是服务器将<script> 元素发送到隐藏的iframe。每个脚本元素都将包含一些可执行的 JavaScript。这种技术依赖于这样一个事实,即浏览器通常会在加载 HTML 元素后立即对其进行解释。这样,客户端就不需要任何类型的轮询代码;脚本标签将包含适当的函数调用,一旦脚本元素完全加载,浏览器就会执行这些调用。

【讨论】:

  • 我认为你没有回答我的问题
  • 那你可能需要改写这个问题,因为在我看来他回答得很好。
  • 确实,您可能需要更具体一些,例如,您指的是哪种彗星技术。正如我所说,大多数浏览器会在加载新的
  • 但是在连接关闭之前,客户端如何从服务器获得响应(其中包含<script> 或其他内容)?
  • 听起来您的问题更多是在网络级别。我不是这方面的专家。但是服务器可以在选择时“刷新”其输出,而无需关闭连接。那时,浏览器几乎必须接受来自管道的任何内容,否则数据将丢失。如果需要,浏览器可以在处理数据之前不断地缓冲它接收到的数据,并等待连接关闭。但事实是,大多数浏览器在处理此类数据之前不会等待连接关闭。
猜你喜欢
  • 2011-01-29
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
  • 2010-09-09
相关资源
最近更新 更多