在Comet和Websockets中打开连接差异

我试图理解Websocket和Comet模型的区别。 根据我的理解,

在彗星模型中,连接保持打开状态,直到服务器有东西推送到客户端。 一旦服务器将数据推送到客户端,连接就会关闭,并为下一个请求建立新的连接。 由于连接可能会长时间保持打开状态(导致大量使用服务器资源)或者可能会超时,因此这不是一种好方法。

另一方面,websockets以握手连接开始,一旦客户端和服务器同意交换数据,连接保持打开。

所以在这两种情况下,连接长时间保持打开状态(尤其是websocket)。 所以这不是websocket保持连接打开的缺点。 我想在asp.net中引用SignalR来讨论这个概念。


首先,让我们澄清Comet有两种风格:HTTP Streaming和HTTP Long Polling。 你指的是长轮询。 (关于术语,请参阅其他答案)。

在所有三种情况下(WebSocket,HTTP Streaming和HTTP Long Polling),底层的TCP套接字都保持打开状态。 这实际上是这种技术的主要特点,而不是副作用。 您希望套接字永久保持打开状态(我现在简化了过多),以便数据可以异步和低延迟地传输。

正如你所说的,这意味着服务器必须能够处理大量的开放套接字而不浪费资源。 这是选择一个好的Comet / WebSocket服务器的关键要素之一。

链接地址: http://www.djcxy.com/p/57341.html

上一篇: Open connection difference in Comet and Websockets

下一篇: what triggers events on the server?