4
我对HTTP轮询,长轮询,HTTP流和WebSocket的理解
我在SO和网络上阅读了很多有关我的问题标题中的关键字的帖子,并从中学到了很多。我读的一些问题与特定的实施挑战有关,而其他问题则与一般概念有关。我只是想确保我了解所有概念以及为什么发明技术X而不是发明技术Y的理由等等。因此,这里去: Http轮询:基本上是AJAX,使用XmlHttpRequest。 Http Long Polling: AJAX,但服务器保留响应,除非服务器进行了更新,一旦服务器进行了更新,它将发送该更新,然后客户端可以发送另一个请求。缺点是需要来回发送的附加头数据,导致额外的开销。 Http流传输:类似于长轮询,但是服务器使用带有“传输编码:分块”的标头进行响应,因此我们不需要每次服务器发送一些数据时就发起一个新请求(从而节省了额外的标头开销)。这里的缺点是我们必须“理解”并弄清楚数据的结构,以区分服务器发送的多个块。 Java Applet,Flash,Silverlight:它们提供了通过tcp / ip连接到套接字服务器的功能,但是由于它们是插件,因此开发人员不想依赖它们。 WebSockets:它们是新的API,它试图通过以下方式解决上述方法的不足: WebSockets相对于Java Applet,Flash或Silverlight等插件的唯一优势是WebSockets内置于浏览器中,并且不依赖于插件。 与HTTP流相比,WebSockets的唯一优势是您不必费力“理解”和解析收到的数据。 WebSockets相对于Long Polling的唯一优势在于,它消除了额外的标头大小以及为请求打开和关闭套接字连接。 我还有其他重大差异吗?很抱歉,如果我要重新提出或将关于SO的许多问题合并为一个问题,但是我只想从SO和Web上有关这些概念的所有信息中完全理解。 谢谢!