0

(抱歉,如果该主题的标题不正确,如果有人帮助我使其与我在下面解释的内容更加相关,将不胜感激)。

最近我对了解 AJAX 推送及其所有基本思想非常感兴趣。我知道 AJAX 推送技术使网页在服务器端更具交互性,但在所有流畅的交互动作背后,显然有一些“艰苦的工作”在舞台后面,无论是在实现上还是在它如何处理资源方面。

所以简而言之,让我们忘记实现,我需要有人向我解释 AJAX 推送在服务器连接方面的工作方式,如何(或多少)资源使用,或者在实现这个时应该考虑的其他一些方面方法。

我没有做太多的研究,所以你有任何与此相关的文件,我很乐意阅读。

4

2 回答 2

1

我真的不明白“ajax push”是怎么回事。我知道长轮询,我认为它是一样的。

长轮询的缺点是您的服务器可能会打开许多​​未完成的请求。不是套接字,而是实际请求。长轮询的想法:

  1. 客户端向服务器发出请求
  2. 服务器没有响应(没有完成请求)
  3. 服务器等到有东西要告诉(给客户端)
  4. 当服务器接收到新信息(来自另一个客户端或其他地方)时,它会将该信息打印给所有等待的客户端(可能很多!)并完成请求
  5. 客户端收到该信息并立即发出另一个请求(使用新的时间戳和/或哈希等)

缺点:如果 500 个客户端都执行第 1 步而没有其他任何操作,则服务器打开了 500 个请求,只是在等待发送一些信息并结束这些请求。大多数服务器不允许 500 个打开的 HTTP 请求...

如果您有时间,您可能想阅读此 PDF。(虽然很长。)

PS。好处是您的服务器接收的 HTTP 请求更少(这意味着更少的 HTTP 开销),并且只有在有东西要发送时才会发送该信息(这也意味着更少的开销)。

编辑
长轮询示例:http ://hotblocks.nl/tests/ajax/poller/与源http://hotblocks.nl/tests/ajax/poller/callback.php?source

解释
好处:更少的 HTTP 开销,因为更少的 HTTP 请求。假设用户数量是静态的(它是)和 500。

使用长轮询:500 个用户发出 1 个请求,然后等待............然后发生变化,所有 500 个请求都完成(由服务器),然后由“更新”(新的 HTTP 请求)客户端。
好处:更少的请求(每个用户每个新信息 1 个)。
缺点:更长的请求(很长的空闲,这意味着更多的开放请求)。

没有长轮询:500 个用户发出请求,服务器以“nothing new”响应,因此 500 个用户在 500ms/1s/5s 后发出另一个请求,服务器再次以“nothing new”等响应,等等,直到服务器有实际消息和然后响应包含一些东西。即使这样,客户也会立即提出新的请求。
优点:对服务器的快速、简短的请求可以快速完成。
缺点:对服务器的请求很多很多(以及每个 HTTP 请求 => HTTP 标头 => 大量开销)。

示例说明
该示例非常(非常)简单:

  1. 您(客户端)向服务器发出请求以获取当前信息
  2. 服务器为您提供该信息和时间戳
  3. 客户端接收信息,使用它(显示消息)并使用时间戳发出新请求
  4. 服务器将客户端时间戳与服务器时间戳(filemtime在这种情况下为文件)进行比较
  5. 如果文件更改比客户端时间戳更新:打印新文件内容
  6. 客户端收到该信息和新的服务器时间戳
  7. 再次进行第 3 步等

第 4 步和第 5 步之间的时间可能很长。在活跃的聊天中,它不会。(新信息一直在添加。)在多人游戏中,它可能是(秒,而不是分钟)。

于 2011-05-23T11:31:01.067 回答
0

这可能会让你开始:

http://www.icefaces.org/main/ajax-java/ajaxpush.iface

但是,此链接在漫画书形式中要好得多=))

http://www.ape-project.org/comics/1/Chapter-I-common-let-s-push.html

本质上它与 AJAX 非常相似,只是服务器现在可以与客户端对话,而不仅仅是客户端请求。

于 2011-05-22T20:40:57.837 回答