7

考虑创建一个用户可以协作的实时应用程序。发现 node.js + socket.io 是此类问题的解决方案之一。

我从其他开发人员那里听说,就我的服务器将提供给用户的套接字数量而言,将会存在瓶颈。因此,如果我有数百个用户同时协作,则打开的套接字数量将用完,用户将无法连接。这是一个有效的担忧吗?

更新:关于某种相关说明,我希望使用 SockJS 而不是 Socket.io。有一个线程解释了这些库的优缺点。这也是一本好书

4

2 回答 2

4

对于数百名用户,我认为这不是问题。

如您所知,套接字在客户端和服务器之间具有持久连接,并且双方可以随时开始发送数据。保持它们打开并不是一个问题,就像处理每秒发送的消息的负载一样。

Socket.io 可以轻松处理 1000 个并发连接。但如果每秒发送超过 8-10k 条消息,它将失败。在您的套接字耗尽之前,您将遇到负载障碍。在大多数情况下,处理更多并发用户会转化为更高的负载。所以不用担心套接字会变低。试图超越这个障碍需要更多的服务器资源。

有用的网址 :

  1. Socket.IO - 开放连接是否值得关注?
  2. http://www.quora.com/How-do-I-scale-socket-io-servers-2
于 2013-03-27T05:43:51.523 回答
1

已经有使用这种方法的解决方案,例如 Cloud9,并且效果很好。将有一个点,您将需要向外扩展。因此,如果您正在计划一些大事,我会考虑一下。

以下是对具有 10,000 个并发连接的 sockets.io 进行的一些测试。看起来这是一个很好的解决方案,但由于回退机制,这并不容易。

于 2013-03-26T22:02:28.520 回答