翻译自 Stack Overflow 的一个回答,原文链接 (部分专业词汇翻译不是太准确,还望指正)。
正文:
这里的 Client(客户端)是浏览器,Server(服务器)是承载网站的 Web 服务器。
一、Regular HTTP:(常规的 HTTP)
-
客户端向服务器请求网页;
-
服务器计算响应;
-
服务器向客户端发送响应。
二、Ajax Polling:(Ajax 轮询)
(Ajax:异步 JavaScript 和 XML,是一种创建交互、快速动态网页应用的网页开发技术。)
-
客户端向服务器请求网页(同 Regular HTTP);
-
客户端接收到请求的网页,并在页面上执行 JavaScript,以固定的时间间隔(比如 0.5s)向服务器请求一个文件;
-
服务器计算每个响应并将其送回,就像常规的 HTTP 业务一样。
三、Ajax Long Polling:(Ajax 长轮询)
-
客户端向服务器请求网页(同 Regular HTTP);
-
客户端接收请求的网页,并在请求服务器文件的页面上执行 JavaScript;
-
服务器不会立即响应所请求的信息,而是会等待,直到有可用的新信息;
-
当有新的信息可用时,服务器响应新信息;
-
客户端接收到新的信息并立即向服务器发送另一个请求,重新启动流程。
四、HTML5 Server Sent Events (SSE) / EventSource:()
-
客户端向服务器请求网页(同 Regular HTTP);
-
客户端接收请求的网页,并在页面上执行 JavaScript,从而建立一个服务器连接;
-
当有新信息可用时,服务器向客户端发送一个事件。
五、HTML5 Websockets:
-
客户端向服务器请求网页(同 Regular HTTP);
-
客户端接收请求的网页,并在页面上执行 JavaScript,从而建立一个服务器连接;
-
服务器和客户端可以在新数据可用时互相发送消息。
六、Comet:
Comet 是 HTML5 之前的技术集合,使用流和长轮询实现实时应用。
原文链接:What are Long-Polling, Websockets, Server-Sent Events (SSE) and Comet?