编程语言
首页 > 编程语言> > php – 什么是长轮询,Websockets,服务器发送事件(SSE)和Comet?

php – 什么是长轮询,Websockets,服务器发送事件(SSE)和Comet?

作者:互联网

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

有人愿意尝试向我解释这些技术是什么:

>长轮询
>服务器发送的事件
> Websockets
>彗星

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

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

解决方法:

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

在了解这些技术之前,您必须首先了解经典的HTTP Web流量.

常规HTTP:

>客户端从服务器请求网页.
>服务器计算响应
>服务器将响应发送给客户端.

Ajax轮询:

>客户端使用常规HTTP从服务器请求网页(请参阅上面的HTTP).
>客户端接收所请求的网页并在页面上执行JavaScript,该JavaScript以规则的间隔(例如0.5秒)从服务器请求文件.
>服务器计算每个响应并将其发回,就像普通的HTTP流量一样.

Ajax Long-Polling:

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

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

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

>从服务器到客户端的实时流量,这主要是您需要的
>您将需要使用具有事件循环的服务器
>与其他域的服务器的连接只能是with correct CORS settings
>如果你想了解更多,我发现这些非常有用:(article),(article),(article),(tutorial).

HTML5 Websockets:

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

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

彗星:

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.

标签:long-polling,server-sent-events,php,websocket,comet
来源: https://codeday.me/bug/20190911/1802682.html