Socket.IO – 是一个关注的开放连接吗?

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

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

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

我是否通过使用Socket.IO来牺牲可伸缩性/性能,以及它所维护的所有打开的连接?

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

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

我会看看成本(开发时间)来开发您的网站使用主干/快递组合与德比。

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

PS:我认为你应该尽量保持你的系统尽可能的模块化,这样就可以用最less的时间replace别的Derby.js。