Comet现在与服务器发送的事件和WebSocket一起过时了吗?

Comet现在与服务器发送的事件和WebSocket一起过时了吗?,websocket,comet,server-sent-events,Websocket,Comet,Server Sent Events,或者服务器发送事件和WebSocket会取代Comet技术吗?虽然WebSocket在最基本的层面上提供了一种在Web和HTTP上下文中客户端和服务器之间双向通信的方式,但它是一种简单的通信形式 Comet在WebSocket之上提供了更多功能(事实上,Comet甚至支持WebSocket),包括以下功能: 如发布/订阅和通信渠道 当websocket不可用时,回退到旧的clientserver通信技术 Comet是一组技术原理/通信模式,通常使用HTTP长轮询实现。它使服务器能够按需向浏览器

或者服务器发送事件和WebSocket会取代Comet技术吗?

虽然WebSocket在最基本的层面上提供了一种在Web和HTTP上下文中客户端和服务器之间双向通信的方式,但它是一种简单的通信形式

Comet在WebSocket之上提供了更多功能(事实上,Comet甚至支持WebSocket),包括以下功能:

  • 如发布/订阅和通信渠道
  • 当websocket不可用时,回退到旧的clientserver通信技术

Comet是一组技术原理/通信模式,通常使用HTTP长轮询实现。它使服务器能够按需向浏览器发送数据(即服务器推送)。当前的comet实现需要客户端的一些复杂Javascript和服务器端的支持(用于长时间保存的请求)

服务器发送事件是一种标准(HTML5)浏览器API,用于支持这种按需服务器推送。您可以将服务器发送的事件视为使用复杂的Javascript执行的操作,并将其向下推到浏览器本身中

WebSocket允许浏览器与支持WebSocket的服务器建立持久的全双工/双向连接。与AJAX/long poll一样,它不需要客户端定期向服务器发出HTTP请求来维护连接。建立连接后,与正常HTTP/HTTP长轮询的开销相比,每条消息的开销非常低(几个字节)。您可以使用WebSocket进行高效的服务器推送,但这只是一个应用程序

还有一些库构建在AJAX/comet/WebSockets传输层上,提供会话管理、频道、广播、pubsub等功能。就是一个例子。另一个流行的例子是。如果WebSockets可用于底层传输,则两者都支持WebSockets,如果WebSockets不可用,则还支持标准AJAX/长轮询。

我最初认为是这样的。然而,经过一些讨论,我后来被“彗星”的创造者纠正并说服,事实并非如此

正如@kanaka所说,Comet是模拟客户端和服务器之间双向通信的一组原则(服务器推送是解决方案的一半,现在由服务器发送的事件和事件源API提供)

然而,Comet解决方案是黑客,因为它们在web浏览器之间的工作不一致。因此,Alex Russell说:

接下来,Web套接字是Comet的一种形式吗?或者Comet只是HTTP黑客?我将采用后一种定义。这个短语和黑客们很可能会一起走向日落。一、 首先,欢迎我们的非HTTP实时霸主。在某种程度上,我们可以忘记旧浏览器(上帝知道我在尽我的一份力量),我们都可以使用“网络套接字”,而对任何特定保护伞的需求都将消失

因此,让我们把重点放在:我们如何让用户进入一个闪亮的新浏览器汽车?基于WebSockets的应用程序可以提供丰富的内容和实时体验,我们可以向他们提供什么样的服务?彗星是关于过去的。让我们把未来变成现实

我现在和亚历克斯在这件事上是一致的。但是,Comet—HTTP解决方案—不会过时,除非:

  • 浏览器支持率为100%,我们不需要
  • 反病毒制造商(如Avast!)开始支持HTML5网络技术,并停止其软件干扰连接
  • 一些互联网基础设施已更新,以确保WebSocket的支持。根据我的经验,通过端口443连接WSS(安全WebSocket连接)通常意味着连接通过防火墙和代理,但我们希望端口80上的WS也始终得到支持

  • 我将从术语和历史的角度来探讨这个答案

    正如我在中所写的,我们可以使用几个总括术语中的一个来指代可用于将事件从web服务器异步发送到web客户端(反之亦然)的一组技术。“推送技术””一词已经使用了十五年(在推送技术的短暂历史中,你可以看到我在多年前写的这篇文章《完全披露:我是Lightstreamer的创造者》)。现在,“网络流媒体”一词正在IT分析师中获得共识(见Gartner,“2012年应用和集成平台的酷供应商”,由Massimo Pezzini和Jess Thompson撰写,2012年4月11日)

    重要的方面是,我们正在讨论基于Web的通信,即利用Web协议。有大量的消息传递协议和技术不是基于Web的(例如,大多数妈妈),我们不认为它们是推送技术(或Web流)的一部分。 也就是说,您可以区分推送技术(或Web流媒体)的两个子类别:

    • HTTP基于
    • 基于WebSocket的
    HTTP和WebSocket都是Web协议

    如果分解基于HTTP的推送机制,可以识别:

    • HTTP流媒体
    • HTTP长轮询
    • HTTP轮询
    传统上,“彗星”(Comet)一词(Alex Russell于2006年创造)指的是HTTP流和HTTP轮询。但是,考虑到HTTP流的第一个实现可以追溯到<强> 2000 <强>,在彗星术语诞生之前(例子是推送A)。