Node.js和socket.io

Node.js和socket.io,node.js,sockets,socket.io,Node.js,Sockets,Socket.io,我希望使用node.js和socket.io构建一个web应用程序,但对于是使用socket.io还是使用普通http,我有很多困惑。在应用程序中,node.js服务器基本上是一个api服务器,为javascript客户端提供json,也可以是移动客户端。该web应用程序还将为其用户提供聊天信息,这就是socket.io的用武之地 我不确定是将socket.io用于整个应用程序还是仅用于聊天部分。虽然我的应用程序本身可以从socket.io中获益,但我认为,使用普通http和客户端向服务器发出

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

  • 我不确定是将socket.io用于整个应用程序还是仅用于聊天部分。虽然我的应用程序本身可以从socket.io中获益,但我认为,使用普通http和客户端向服务器发出更多请求是无法做到的

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

  • 当客户端系统中有防火墙时,Socket.io经常崩溃,特别是产生问题

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


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

我建议通过HTTP为您的API提供服务,并将实时业务留给Socket.io。如果您不喜欢使用WebSocket,如@GeoPheonix所述,您可以使用socket.io和sockjs()从多种传输方法中进行选择

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

  • Socket.io比普通http更快。我建议你使用它的所有,因为你必须有一个聊天摆在首位
  • 在我的例子中,实时德州Hold'em-like游戏可以在一个节点进程中同时接收多达2500个。但是,如果您将传输从websocket更改为xhr轮询,它可以接收比纯websocket多10倍的数据。你的应用程序只是聊天,所以,我想稍微慢一点不会是个问题。如果你确定你会超过这个数字,是的,scale socket.io是个难题
  • 只有在为端口80和443以外的端口打开socket.io时,才会发生此问题。如果您的前端web服务器已经使用其他语言,您仍然可以在另一个子域上使用socket.io,以便能够在端口80上运行,而不会与主前端web服务器发生冲突。Socket.io支持跨域,没有问题
  • 你用过trello.com吗?如果没有,请尝试:)。它最适合于任务管理,甚至是一些敏捷的东西。他们使用socket.io。这是另一个。这是一个类似谷歌文档的在线IDE。需要注意的一点是socket.io中的xhr polling trasport与具有长轮询的http ajax相同(优于一般ajax)。您可以通过以下网址阅读更多信息:

Socket.io不会强制您使用websocket。WebSocket使您的应用程序实时,您可以使用任何其他受支持的传输方式、jsonp等。@GeoPhoenix是的,我理解,但我在这里谈论的是socket.io和普通http。这只是他们之间的比较