Socket.IO - 关注的是开放连接吗?

时间:2012-06-07 13:45:19

标签: node.js backbone.js socket.io derbyjs

我目前正在使用DerbyJS,因为它可以促进干净的DRY客户端/服务器代码。副作用(大多数人使用框架的主要原因)是它使用Socket.IO来创建实时应用程序。在这种情况下,我不需要实时,但它是一个很好的补充。

我的问题是 - 我是否通过使用Socket.IO以及它维护的所有开放连接来牺牲可伸缩性/性能?使用Backbone + ExpressJS会释放资源,因为没有开放的连接吗?

2 个答案:

答案 0 :(得分:10)

保持一堆开放连接显然在服务器开销方面有一些成本,但我不担心这样的问题,除非你有明显的扩展问题。一旦出现明显的扩展问题,您应该有足够的收入来购买更多的服务器资源。服务器非常便宜,而且你的时间非常昂贵。不要担心优化小东西。

答案 1 :(得分:5)

  我是否通过使用Socket.IO来牺牲可伸缩性/性能   它维护的那些开放式连接?

如果要在新信息可用时立即更新页面(动态页面)。然后使用非阻塞io 保持连接打开是最有效的方法。幸运的是node.js确实使用了非阻塞的io。这是node.js如此受欢迎的原因之一(另外,您可以使用JavaScript编写代码,这是最流行的编程语言)。如果你真的不需要它(也在将来),因为你的网站是静态的(不像你说的那样实时),那么关闭连接将节省你的资源。

  

使用Backbone + ExpressJS会释放资源,因为没有   打开连接?

我会看一下使用骨干/快递组合与derbyjs开发网站的成本(开发时间)。

然后再次提到Nate提到的Socket.io可以轻松处理多个(1000+)并发连接。 如果使用derbyJS更容易开发,那么我会使用它。当你跨过这条路时,你总是可以决定添加更多的服务器或重新设计(可以聘请额外的程序员)你的网站使用快速/骨干组合。首先尝试以最小的努力(开发时间)让用户发现您的网站有价值。

P.S:我认为你应该尽量让你的系统保持模块化,以便用最少的时间来替换Derby.js。