我试过读一些文章,但我还不太清楚这些概念
是否有人想向我解释一下这些技术是什么:
- 长轮询
- 服务器发送事件
- 网袋
- 彗星
我每次遇到的一件事是,服务器保持连接打开,并将数据推送到客户端。连接如何保持打开状态,客户端如何获取推送的数据?(客户机如何使用数据,也许一些代码会有所帮助?)
现在,我应该在实时应用程序中使用哪一个。我已经听说了很多关于WebSocket(带有socket.io[node.js库])的事情,但是为什么不使用PHP呢
在下面的示例中,客户端是浏览器,服务器是承载网站的Web服务器。
在了解这些技术之前,您必须先了解经典HTTP web流量
常规HTTP:
- 客户端从服务器请求网页
- 服务器计算响应
- 服务器向客户端发送响应
Ajax轮询:
- 客户机使用常规HTTP(参见上面的HTTP)从服务器请求网页
- 客户端接收请求的网页并在页面上执行JavaScript,该页面定期(例如0.5秒)向服务器请求文件
- 服务器计算每个响应并将其发回,就像正常的HTTP通信一样
Ajax长轮询:
- 客户机使用常规HTTP(参见上面的HTTP)从服务器请求网页
- 客户端接收请求的网页,并在页面上执行JavaScript,该页面从服务器请求文件
- 服务器不会立即响应请求的信息,而是等待有新的可用信息
- 当有新信息可用时,服务器将用新信息进行响应
- 客户机接收到新信息并立即向服务器发送另一个请求,从而重新启动流程
HTML5服务器发送事件(SSE)/事件源:
- 客户机使用常规HTTP(参见上面的HTTP)从服务器请求网页
- 客户端接收请求的网页,并在页面上执行JavaScript,从而打开与服务器的连接
-
当有新信息可用时,服务器向客户端发送事件
- 从服务器到客户机的实时流量,主要是您需要的
- 您需要使用具有事件循环的服务器
- 只有正确的CORS设置才能与其他域的服务器连接
- 如果你想读更多,我发现这些非常有用:(文章),(文章),(文章),(教程)
HTML5 WebSocket:
- 客户机使用常规http(参见上面的http)从服务器请求网页
- 客户端接收请求的网页,并在页面上执行JavaScript,从而打开与服务器的连接
-
当新数据(在任意一侧)可用时,服务器和客户端现在可以互相发送消息
- 从服务器到客户端的实时流量和从客户端到服务器的实时流量
- 您需要使用具有事件循环的服务器
- 使用WebSocket,可以从另一个域连接到服务器
- 也可以使用第三方托管的websocket服务器,例如Pusher或其他服务器。这样,您只需实现客户端,这非常简单
- 如果你想读更多,我发现这些非常有用:(文章),(文章)(教程)
彗星:
Comet是HTML5之前的一系列技术的集合,这些技术使用流和长轮询来实现实时应用程序。阅读更多关于维基百科或这篇文章
现在,我应该将其中哪一个用于实时应用程序(我需要这样做)
代码)。我已经听说了很多关于WebSocket(使用socket.io[a
但为什么不是PHP呢
您可以将PHP与WebSocket一起使用,请查看Ratchet