Websockets持久连接

时间:2015-01-09 07:33:43

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

由于连接是持久的,我知道在建立新连接时会阻止大量网络拥塞,例如定期轮询数百台服务器。 我有一个简单的问题。它不会在服务器和客户端上加载以保持连接持续很长时间吗?收益是否会失去?

2 个答案:

答案 0 :(得分:1)

建立到服务器但不发送或接收(空闲)的TCP(以及WebSocket)连接确实消耗了服务器上的内存,但没有CPU周期。

在某些网络环境(如移动 )上保持TCP连接活动(以及"响应")需要定期发送/接收少量数据。例如。 WebSocket有内置的ping / pong(非app数据)消息。这样做会消耗一些CPU周期,但不会很多。

答案 1 :(得分:0)

持久连接是一种传统。

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

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

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