gpt4 book ai didi

php - 什么是长轮询、Websocket、服务器发送事件 (SSE) 和 Comet?

转载 作者:IT老高 更新时间:2023-10-28 11:35:40 25 4
gpt4 key购买 nike

我已经尝试阅读一些文章,但我对这些概念还不是很清楚。

有人愿意向我解释一下这些技术是什么吗:

  1. 长轮询
  2. 服务器发送的事件
  3. 网络套接字
  4. cometd

我每次遇到的一件事是,服务器保持连接打开并将数据推送到客户端。连接如何保持打开状态,客户端如何获取推送的数据? (客户端如何使用数据,也许一些代码可能会有所帮助?)

现在,我应该将其中哪一个用于实时应用。我听说过很多关于 websockets(使用 socket.io [一个 node.js 库]),但为什么不是 PHP?

最佳答案

在下面的示例中,客户端是浏览器,服务器是托管网站的网络服务器。

在了解这些技术之前,您必须先了解经典 HTTP 网络流量。

常规 HTTP:

  1. 客户端向服务器请求网页。
  2. 服务器计算响应
  3. 服务器将响应发送给客户端。

HTTP

Ajax 轮询:

  1. 客户端使用常规 HTTP 向服务器请求网页(请参阅上面的 HTTP)。
  2. 客户端收到请求的网页,并在页面上执行 JavaScript,以定期(例如 0.5 秒)从服务器请求文件。
  3. 服务器计算每个响应并将其发回,就像正常的 HTTP 流量一样。

Ajax Polling

Ajax 长轮询:

  1. 客户端使用常规 HTTP 向服务器请求网页(请参阅上面的 HTTP)。
  2. 客户端接收到请求的网页,并在页面上执行向服务器请求文件的 JavaScript。
  3. 服务器不会立即响应请求的信息,而是等到有新的信息可用。
  4. 当有新信息可用时,服务器会以新信息进行响应。
  5. 客户端收到新信息后立即向服务器发送另一个请求,重新启动该过程。

Ajax Long-Polling

HTML5 服务器发送事件(SSE)/事件源:

  1. 客户端使用常规 HTTP 向服务器请求网页(请参阅上面的 HTTP)。
  2. 客户端收到请求的网页并在页面上执行 JavaScript,从而打开与服务器的连接。
  3. 当有新信息可用时,服务器会向客户端发送一个事件。

HTML5 SSE

HTML5 网络套接字:

  1. 客户端使用常规 http 向服务器请求网页(请参阅上面的 HTTP)。
  2. 客户端收到请求的网页并在页面上执行 JavaScript,从而打开与服务器的连接。
  3. 服务器和客户端现在可以在有新数据(任一方)可用时相互发送消息。

    • 从服务器到客户端从客户端到服务器的实时流量
    • 您需要使用具有事件循环的服务器
    • 使用 WebSockets 可以连接来自另一个域的服务器。
    • 也可以使用第三方托管的 websocket 服务器,例如 Pusherothers .这样你只需要实现客户端,非常简单!
    • 如果您想了解更多信息,我发现这些非常有用:( article )、(article) (tutorial)。

HTML5 WebSockets

cometd :

Comet 是 HTML5 之前的技术集合,它使用流式传输和长轮询来实现实时应用程序。阅读更多 wikipediathis文章。


Now, which one of them should I use for a realtime app (that I need to code). I have been hearing a lot about websockets (with socket.io [a node.js library]) but why not PHP ?

您可以将 PHP 与 WebSockets 一起使用,请查看 Ratchet .

关于php - 什么是长轮询、Websocket、服务器发送事件 (SSE) 和 Comet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11077857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com