【问题标题】:Websockets persistant connectionWebsockets 持久连接
【发布时间】:2015-01-09 07:33:43
【问题描述】:

由于连接是持久的,我知道在设置新连接时可以防止很多网络拥塞,例如定期轮询数百台服务器。 我有一个简单的问题。它不会在服务器和客户端上都增加负载以使连接保持很长时间吗?获得的收益会丢失吗??

【问题讨论】:

    标签: c# websocket network-programming long-polling polling


    【解决方案1】:

    与服务器建立的 TCP(以及 WebSocket)连接,但不发送或接收(处于空闲状态),确实会消耗服务器上的内存,但不会消耗 CPU 周期。

    为了在某些网络环境(如移动设备)上保持 TCP 连接有效(并且“响应”)可能需要定期发送/接收少量数据。例如。 WebSocket 为此内置了 ping/pong(非应用数据)消息。这样做会消耗一些 CPU 周期,但不会很多。

    【讨论】:

      【解决方案2】:

      持久连接是一种权衡。

      是的,它们需要服务器存储与每个连接相关的状态,它们需要维护(例如保持活动数据包或 websocket ping),并且它们需要监视(以检测状态更改或到达的信息)。因此,您会在每个连接上花费一些内存和 CPU 资源。

      但是它们在连接重新初始化时节省了大量时间,而且通常是资源;一旦建立起来,它们就允许双方发送和接收信息,而不是像经典 HTTP 这样的非持久客户端-服务器系统。

      所以这实际上取决于您正在构建的系统。如果您的系统有数百万用户需要偶尔连接到服务器,那么保持这些连接打开的好处可能不值得额外的资源。但是,如果您正在为数百人设计类似聊天服务器之类的东西,那么额外的响应能力可能是值得的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-12
        • 2011-03-29
        • 2011-01-16
        • 2013-01-22
        • 2012-12-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多