我试过读一些文章,但我还不太清楚这些概念.

有没有人愿意试着给我解释一下这些技术是什么:

  1. 长时间轮询
  2. 服务器发送事件
  3. 网袋
  4. 彗星

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

现在,我应该在实时应用程序中使用哪一个呢.我已经听说了很多关于WebSocket(带有socket.io[node.js库])的事情,但为什么不使用PHP呢?

推荐答案

In the examples below the client is the browser and the server is the webserver hosting the website.

在了解这些技术之前,您必须先了解classic个HTTP web流量.

常规HTTP:

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

HTTP

Ajax轮询:

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

Ajax Polling

Ajax长轮询:

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

Ajax Long Polling

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

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

HTML5 SSE

HTML5 WebSocket:

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

    • 从服务器到客户端and从客户端到服务器的实时业务
    • 您需要使用具有事件循环的服务器
    • 通过WebSocket,可以从另一个域连接到服务器.
    • 也可以使用第三方托管的websocket服务器,例如Pusherothers.这样你只需要实现客户端,这很容易!
    • 如果你想读更多,我发现这些非常有用:(article),(article)(tutorial).

https://i.stack.imgur.com/CgDlc.png"ALT="HTML5WebSockets">

彗星:

Comet是HTML5之前的一系列技术的集合,它们使用流媒体和长轮询来实现实时apply.阅读更多关于wikipediathis的文章.


现在,我应该在实时应用程序中使用哪一个(我需要这样做)

您可以在WebSockets中使用PHP,请查看Ratchet.

Php相关问答推荐

在特定订单状态更改时自定义WooCommerce订单发货项目

Laravel关系-为用户获取属于组织的所有团队

从订单项目中获取ACF WooCommerce产品价值

htaccess重命名index.php以在URL中显示为SEO的友好名称

如何在WordPress REST API中判断应用程序密码

从WooCommerce管理订单汇总中隐藏原始小计行

将购物车按钮重定向到Checkout-Wooccommerce

可以';exec、system和shell_exec PHP函数中的命令字符串上的字符数不得超过8175

强制客户在注册时 Select WooCommerce角色

文本到语音:不考虑音高值

execute_query 和prepare+execute 有什么区别?

Mac 上安装 php 时出现 Homebrew 错误

woocommerce_available_ payment_gateways 过滤器挂钩多次触发

Woocommerce API - 图像问题

使用 secure 和 httponly 选项删除 php 中的 cookie 值得吗?

API 平台 - UI 服务器端点定义

正则表达式将文本替换为标签 html 以字符开头

无法读取某些 WordPress 主机上的 cookie

Symfony:指定 data_class 时,提交的表单获取初始化前不得访问

WooCommerce订单支付页面上的附加支付订单按钮