我已经阅读了许多关于我的问题标题中的关键词的帖子,从中学到了很多东西。我读到的一些问题与具体的实现挑战有关,而其他问题侧重于一般概念。我只是想确保我理解了所有的概念以及为什么技术 X 比技术 Y 发明的原因等等。所以我们开始吧:
Http Polling: 基本上是 AJAX,使用 XmlHttpRequest。
Http Long Polling: AJAX 但是除非服务器有更新,否则服务器会保留响应,一旦服务器有更新,它就会发送响应,然后客户端就可以发送另一个请求。缺点是需要来回发送额外的头数据,从而导致额外的开销。
Http Streaming: 类似于长轮询,但是服务器用一个“ Transfer Encoding: chunked”头进行响应,因此我们不需要每次服务器发送一些数据时都发起一个新的请求(从而节省了额外的头开销)。这里的缺点是,我们必须“理解”并找出数据的结构,以区分服务器发送的多个块。
Java Applet,Flash,Silverlight: 它们提供了通过 tcp/ip 连接到套接字服务器的能力,但由于它们是插件,开发人员不想依赖它们。
WebSockets: 它们是新的 API,试图以下列方式解决上述方法的缺点:
我还遗漏了什么其他重大差异吗?我很抱歉,如果我重新问或合并许多问题已经在 SO 成为一个单一的问题,但我只是想让所有的信息,在那里的 SO 和网络上有关这些概念的完美意义。
谢谢!