首页 文章

在Comet和Websockets中打开连接差异

提问于
浏览
0

我试图了解Websocket和Comet模型的不同之处 . 据我了解,

在彗星模型中,连接保持打开状态,直到服务器有东西推送到客户端 . 服务器将数据推送到客户端后,将关闭连接并为下一个请求 Build 新连接 . It is not considered a good approach as the connection may remain open for long time (causing intensive use of server resources) or may timeout.

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

因此,在这两种情况下,连接长时间保持打开状态(尤其是websocket) . So isnt't this a drawback of websocket to keep the connection open. 我想在asp.net中引用SignalR来讨论这个概念 .

1 回答

  • 1

    首先,让我们澄清Comet有两种形式:HTTP Streaming和HTTP Long Polling . 你指的是Long Polling . (术语见this other answer) .

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

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

相关问题