3

我正在寻找使用 node.js 和可能的 socket.io 构建一个 Web 应用程序,但是对于是使用 socket.io 还是使用普通的 http,我有很多困惑。在应用程序中,node.js 服务器基本上是一个 api 服务器,它为 javascript 客户端提供 json,或者也可能是移动客户端。该网络应用程序还将为其用户提供聊天信使,这就是 socket.io 的用武之地。

  • 我不确定是否将 socket.io 用于整个应用程序或仅用于聊天部分。尽管我的应用程序本身可以从 socket.io 中受益,但我认为使用纯 http 和客户端向服务器发出更多请求是无法完成的。

  • 我在几个地方读到过,有时 socket.io 很难为更多用户扩展。

  • 当客户端系统中有防火墙时,Socket.io 经常崩溃并特别创建问题。

  • 更重要的是.....我查看了socket.io用户列表并没有找到很多用户,所以很想知道什么样的平台更知道像facebook messenger,google talk等聊天网络是建立在什么基础上的,有没有建立使用 http-ajax 并继续查询服务器。

请帮我解决这个问题。有些人可能会争辩说这是一个基于意见的问题。但实际上我想弄清楚socket.io的实现及其限制。

4

2 回答 2

0

我建议通过 HTTP 为您的 API 提供服务,并将实时业务留给 Socket.io。如果您不喜欢使用 Websockets,就像 @GeoPheonix 所说的那样,您可以使用 socket.io 和 sockjs ( https://github.com/sockjs/sockjs-node ) 从多种传输方法中进行选择。

就扩展而言,我为一个非常大的应用程序部署了一个基于 socket.io 的实时分析/跟踪服务,平均有 400 多个并发连接,没有明显的性能影响,但这可能取决于实现和硬件。

于 2013-11-12T22:05:15.750 回答
0
  • Socket.io 比普通的 http 更快。我建议您全部使用它,因为您必须首先进行聊天。
  • 就我而言,实时德州扑克类游戏可以接收多达 2500 个并发节点进程。但是,如果您将传输从 websocket 更改为 xhr-polling,它可以接收比纯 websocket 多 10 倍的数据。您的应用程序只是聊天,所以我想稍微慢一点不会有问题。如果你确定你会超过这个数字,是的,扩展 socket.io 是一件痛苦的事情。
  • 仅当您为 80 和 443 以外的端口打开 socket.io 时才会出现此问题。如果您已经有其他语言的前端 Web 服务器,您仍然可以在另一个子域上使用 socket.io 以便能够在端口 80 上运行而不会发生冲突与您的主要前端 Web 服务器。Socket.io 支持跨域没有问题。
  • 你用过 trello.com 吗?如果没有,请尝试:)。它最适合任务管理,甚至是一些敏捷的事情。他们使用了socket.io。https://c9.io/是另一个。它是具有类似 google doc 协作的在线 IDE。需要注意的一点是 socket.io 中的 xhr-polling trasport 与带有长轮询的 http-ajax 相同(比一般的 ajax 更好)。您可以在以下位置阅读更多信息: http ://book.mixu.net/node/ch13.html
于 2013-11-15T07:39:48.590 回答